我有一个事件处理程序将取消选中相应复选框列表中的元素。在复选框的click事件的处理程序中,首先我复制该复选框的标签值:
var label = $(this).next().html();
然后,我遍历列表项并将它们与该标签进行比较:
$("#sortable li").each(function() {
if ($(this).html() === label) {
$(this).remove();
}
});
在Internet Explorer 8和Firefox中,这完全符合我的预期。在Internet Explorer 7中,它没有。 “if”语句中的条件永远不会成立。我在这里缺少什么?
根据要求,在一种情况下,被比较的字符串是“充电”和“充电”。
答案 0 :(得分:4)
alert(label)
和alert($(this).html())
来查看正在比较的内容。===
),您可以想象使用普通比较(==
)。答案 1 :(得分:2)
为什么不使用脚本调试器并查看比较为何错误?只需在if中设置一个断点并观察变量。
IE8内部脚本调试器将帮助您,只需切换到兼容模式即可在IE7 javascript运行时中运行脚本
答案 2 :(得分:1)
你试过调试吗?使用alert查看这两个值的含义,检查该函数是否在IE7中实际调用,并检查它们是否具有相同的类型。
答案 3 :(得分:0)
不是您直接问题的答案,但这是另一种使用jQuery's data method直接在元素上设置和读取标记的方法:
$(this).next().data("toRemove", true);
//...
$("#sortable li").each(function() {
if ($(this).data("toRemove")) {
$(this).remove();
}
});
当然,如果你在任何时候操纵label
那么这就不是你想要的了。我只是提到这一点,因为.data()
是一个非常有用的jQuery功能,我没有听说过多少。直到一周前我才知道它。