您好,这似乎适用于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/