在jQuery中搜索立即选择器?

时间:2013-02-07 15:16:19

标签: javascript jquery

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

但是,在此功能中,我仅需 obj :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个元素,然后我将不得不过滤。这不太好。)

2 个答案:

答案 0 :(得分:2)

我想你想要.filter()

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

}

答案 1 :(得分:0)

您正在寻找is

  

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

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

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

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

is可用于此类情况。

您可以在jsperf

测试效果