我有一个嵌套的表结构
<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; }