jQuery:find()children直到遇到某个阈值元素

前端之家收集整理的这篇文章主要介绍了jQuery:find()children直到遇到某个阈值元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个嵌套的表结构
<table>

       <td id="first">

           <div class="wrapper">
               <input name=1>
           </div>

           <input name=2>

           <table>

               <td id="second">

                   <input name=3>

我有jQuery选择$(“#第一”).我想在这个< td>中遍历并查找()所有的孩子< input>上下文,但不能下降到嵌套的< table> s中.

所以我需要一个jQuery技巧

>将find()一个元素的所有子元素
>将在DOM树中下降n级
>但是如果确定某个元素(< table>)遇到,则会停止下降,以便选择器不会选择嵌套表的输入(将单独处理)
>可以有任意数量的嵌套< table>级别,所以无论多少父< table>或儿童< table>在$(“#first”)< td>的范围内遇到或任何其他< td>

我检查了其他jQuery查找直到问题.他们有答案,但似乎他们不填补最后的标准

解决方法

我在 this other question年有一个类似的问题.最后,我终于找到了一个插件,我自己来回来,有些人试图想到一个查找选择器.

用途:
ExclusiveInputs = $(‘#first’).findExclude(‘input’,’table’);

// Find-like method which masks any descendant
// branches matching the Mask argument.
$.fn.findExclude = function( Selector,Mask,result){

    // Default result to an empty jQuery object if not provided
    var result = typeof result !== 'undefined' ?
                result :
                new jQuery();

    // Iterate through all children,except those match Mask
    this.children().each(function(){

        var thisObject = jQuery( this );
        if( thisObject.is( Selector ) ) 
            result.push( this );

        // Recursively seek children without Mask
        if( !thisObject.is( Mask ) )
            thisObject.findExclude( Selector,result );
    });

    return result;
}

(简明版):

$.fn.findExclude = function( selector,mask,result )
{
    var result = typeof result !== 'undefined' ? result : new jQuery();
    this.children().each( function(){
        var thisObject = jQuery( this );
        if( thisObject.is( selector ) ) 
            result.push( this );
        if( !thisObject.is( mask ) )
            thisObject.findExclude( selector,result );
    });
    return result;
}

猜你在找的jQuery相关文章