.each()在一次迭代后停止了吗?

时间:2011-04-20 19:58:39

标签: jquery each

这么简单的问题,但我无法弄清楚......

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");正确选择并更改所有这些元素的显示,但根据我的警报,当我进入每个,它只匹配第一个元素,就是这样。我在这里想念的是什么?

2 个答案:

答案 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") {

=更改为===

=是赋值运算符,其中===是非转换等式运算符