这么简单的问题,但我无法弄清楚......
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");
正确选择并更改所有这些元素的显示,但根据我的警报,当我进入每个,它只匹配第一个元素,就是这样。我在这里想念的是什么?
答案 0 :(得分:5)
正确性:更改
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()
进行调试。使用真正的调试器。
答案 1 :(得分:3)
if ($(this).css("display") = "inline") {
将=
更改为===
=
是赋值运算符,其中===
是非转换等式运算符