0

我正在尝试从已设置的表中获取选中的选项inline。有一个搜索功能,它设置$(element).css('display','none')与搜索不匹配的对象。无论如何,这段代码只会返回inline,无论元素设置为什么。即使我手动将它们全部设置display: none在表本身中,警报也会inline针对表中的每个对象返回。有什么解决办法吗?

JS代码:

function pass_QR() {
    var i = 0;
    var array = [];
    $("input:checkbox:checked").each(function () {
        i++;
        alert($(this).css('display'));
        if ($(this).val() !== 0 && $(this).css('display') === 'inline') {
            array.push($(this).val());
        }
    });
}
4

2 回答 2

2

从根本上说,css("display")确实有效,所以正在发生其他事情。

我怀疑两件事之一:

  1. 您正在制作的复选框display: nonenever checked,因此您不会在each循环中看到它们。

  2. 不是在制作 checkboxes display: none,而是对它们的某些祖先元素执行此操作。在这种情况下,$(this).is(":visible")这就是您要查找的内容。

这是#2 的示例:Live Copy | 直播源

<div id="ancestor">
<input type="checkbox" checked>
</div>
<script>
$("#ancestor").css("display", "none");
console.log("display property is now: " +
    $("input:checkbox:checked").css("display"));
console.log("visible tells us what's going on: " +
    $("input:checkbox:checked").is(":visible"));
</script>

...输出:

显示属性现在是:inline-block
可见告诉我们发生了什么:假

将其应用于您的代码:

function pass_QR() {
    var i = 0;
    var array = [];
    $("input:checkbox:checked").each(function () {
        i++;
        alert($(this).css('display'));
        if ($(this).val() !== 0 && $(this).is(':visible')) {
        // Change is here -----------------^^^^^^^^^^^^^^
            array.push($(this).val());
        }
    });
}

旁注:每次调用时$(),jQuery 都必须做一些工作。当您发现自己在同一范围内重复调用它时,最好只做一次

function pass_QR() {
    var i = 0;
    var array = [];
    $("input:checkbox:checked").each(function () {
        var $this = $(this); // <=== Once
        i++;
        alert($this.css('display'));
        if ($this.val() !== 0 && $this.is(':visible')) {
        // Other change is here -------^^^^^^^^^^^^^^
            array.push($this.val());
        }
    });
}
于 2013-08-12T07:27:42.110 回答
0

尝试以下:

$("input:checkbox:checked").each(function(i,o){       
      console.log($(this).css("display"));       
});

在这里工作小提琴:http: //jsfiddle.net/BcfvR/2/

于 2013-08-12T07:26:52.387 回答