.each()在一次交互后停止了吗?

Sve*_*ang 1 each jquery

这么简单的问题,但我无法弄明白......

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");
            }
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

这在一次迭代后停止,我在页面上有多个以"rfv"开头的跨度,第一个语句$('span[id^="rfv"]').css("display", "block");正确选择并更改所有这些元素的显示,但根据我的警报,当我进入每个时,它只匹配第一个元素,就是它.我在这里失踪了什么?

Mat*_*all 5

正确性:改变

if ($(this).css("display") = "inline")
Run Code Online (Sandbox Code Playgroud)

if ($(this).css("display") === "inline")
Run Code Online (Sandbox Code Playgroud)

性能:在适当的地方缓存jQuery选择器.

简洁:利用.css()可以将函数作为第二个参数的事实.


function pageLoad() {
    runDatepickers();
    $("#btnSubmit").click(function () {
        $('span[id^="rfv"]').css("display", function (i, display) {
            return display === "inline" ? "block" : display;
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

结语:拜托,不要alert()用于调试.使用真正的调试器.