您好,这似乎可以在 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 有选项可以做你想做的事情 - 直接通过调用 getters (或类似的东西),但我再也找不到它了:(也许我记错了。无论如何,你可以轻松地使用 $.each
和/或 $.map
来查看每个匹配的元素,但这取决于您真正想用它做什么。
关于javascript - jquery inArray 的奇怪 ie 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508759/