这么简单的问题,但我不明白......
function pageLoad() {
runDatepickers();
$("#btnSubmit").click(function () {
$('span[id^="rfv"]').css("display", "block");
alert("Submit was clicked");
$('span[id^="rfv"]').each(function () {
alert($(this).attr("id"));
if ($(this).css("display") = "inline") {
alert("display is inline");
$(this).css("display", "block");
}
});
});
};
这会在一次迭代后停止,页面上有多个以“rfv”开头的跨度,第一个语句 $('span[id^="rfv"]').css("display ", "block");
确实正确选择并更改了所有这些元素的显示,但根据我的警报,当我进入每个元素时,它只匹配第一个元素,仅此而已。我在这里缺少什么??
最佳答案
正确性:更改
if ($(this).css("display") = "inline")
至
if ($(this).css("display") === "inline")
性能:在适当的地方缓存 jQuery 选择器。
简洁:利用.css()
can take a function这一事实作为第二个参数。
function pageLoad() {
runDatepickers();
$("#btnSubmit").click(function () {
$('span[id^="rfv"]').css("display", function (i, display) {
return display === "inline" ? "block" : display;
});
});
};
<小时/>
尾声:请,哦,请不要使用alert()
进行调试。使用真正的调试器。
关于jquery - .each() 在一次迭代后停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5735912/