Ben*_*min 7 html javascript jquery jquery-selectors
如何选择第一个"最浅"的输入?
我当前的选择将是标记为"已选择"的div.
我不知道会有多少级别.
<div class="selected"> <!-- already have this -->
<div class="unknown-number-of-wrapper-panels">
...
<div class="collection">
<div class="child">
<input type="text" value="2" /> <!-- don't want this -->
</div>
</div>
<input type="text" value="2" /> <!-- need this -->
<input type="text" value="2" />
...
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
它似乎find().first()给了我最深刻的一个.
编辑清晰.我需要根据它较浅而不是基于其他独特属性的事实来找到它.
这可能就像是反过来的closest()?
如果我理解您的问题,您需要以递归方式检查子节点以查找具有该类的元素.
function findShallowest( root, sel ) {
var children = root.children();
if( children.length ) {
var matching = children.filter( sel );
if( matching.length ) {
return matching.first();
} else {
return findShallowest( children, sel );
}
} else {
return null;
}
}
var selected = $('.selected');
findShallowest( selected, ':text' );
Run Code Online (Sandbox Code Playgroud)
示例: http ://jsfiddle.net/Qf2GM/
编辑:忘记了一个返回语句,并有一个ID选择器而不是初始的类选择器.selected.
或者将它变成你自己的自定义插件:
示例: http ://jsfiddle.net/qX94u/
(function($) {
$.fn.findShallowest = function( sel) {
return findShallowest( this, sel );
};
function findShallowest(root, sel) {
var children = root.children();
if (children.length) {
var matching = children.filter(sel);
if (matching.length) {
return matching.first();
} else {
return findShallowest(children, sel);
}
} else {
return $();
}
}
})(jQuery);
var result = $('.selected').findShallowest( ':text' );
alert( result.val() );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |