您好,这似乎适用于IE8:

var clsName = link.parents("div.fixed_column").attr("class").split(" ");

if($.inArray("column_one", clsName)


虽然此报告错误(jQuery中的对象预期错误)。

var clsName = link.parents("div.fixed_column").attr("class");


什么是正确的方法?我认为inArray的目的是让jquery处理跨浏览器的问题。

最佳答案

不幸的是,这间接地回答了您的问题,但是...您似乎正在寻找检测某个元素是否具有类的功能,并且由于您已经在使用jQuery,因此只需使用hasClass方法-http://api.jquery.com/hasClass/

对于您的特定代码,请尝试:

if (link.parents("div.fixed_column").hasClass("column_one")) {
    // It has the "column_one" class
}


您问题的更直接答案是link.parents("div.fixed_column").attr("class")返回单个字符串。当jQuery选择器(div.fixed_column)返回多个元素时,这在使用类时,使用获取信息的jQuery方法(例如.attr,使用一个参数...“获取”值)很有可能会返回第一个匹配项仅元素的值。

假设选择器匹配3个元素:

["<div id='div30' class='fixed_column div30_class'></div>",
 "<div id='div2' class='fixed_column div2_class'></div>",
 "<div id='div17' class='fixed_column div17_class'></div>"]


然后,从.attr("class")返回的值将是:fixed_column div30_class,因为它是第一个匹配的元素。

我不确定,但是我认为您期望jQuery返回所有匹配元素的值组成的数组,而事实并非如此。因此,这并不意味着jQuery不会处理跨浏览器的问题,仅意味着您需要查找该方法的作用/返回结果。

我可能发誓jQuery 2.0可以直接执行getter(或类似方法)的操作,但我再也找不到了:(也许我记错了。无论如何,您可以轻松使用$.each和/或$.map来查看每个匹配的元素,但这取决于您实际尝试使用的元素。

关于javascript - 奇怪,即与jQuery inArray的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15508759/

10-09 20:04
查看更多