0

我有这个函数,它接受obj(Jq 对象)作为参数

但是,在这个函数中,我只需要 objwhich is :not(:disabled):not([readonly]

目前我已经设法做到了:

function CheckRequiredSelection(obj)
{
    obj.find(".requiredSelection:visible:not(:disabled):not([readonly])").andSelf().each(function ()
    {
...
    });

}

但我真的很想摆脱findaddSelf欺骗。

有什么帮助吗?

该文件可以包含:

编辑#1 ...

<select class="requiredSelection">
...
</select>

<select class="requiredSelection">
...
</select>

在提交之前:我做了类似的事情:

CheckRequiredSelection($(".requiredSelection"))

编辑#2

我可以在 .each 循环内部进行检查,但由于它位于选择器之后,因此效率不高。(而不是从 100 中获得 5 个过滤元素,我将获得 100 个元素,然后我将不得不过滤。这不好)。

4

2 回答 2

2

我想你想要.filter()

function CheckRequiredSelection(obj)
{
    obj.filter(":visible:not(:disabled):not([readonly])").each(function ()
    {
...
    });

}
于 2013-02-07T15:23:27.777 回答
0

你要找的

根据选择器、元素或 jQuery 对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回 true。

所以,你的代码看起来像,

function CheckRequiredSelection(obj) {
    obj.is(".requiredSelection:visible:not(:disabled):not([readonly])")
}

我不确定它是否比它更快filter

但是is在这种情况下是否可以使用。

您可以在jsperf测试性能

于 2013-02-07T15:40:37.587 回答