我想用一些选择器选择一个元素,并选择最接近<p>
它的元素(注意 p 不与前一个元素嵌套)。我该怎么做?我试过closest()
了,但这只有在元素嵌套时才有效。
编辑:最接近的定义:
<a id="myelement"></a>
<p id="1"></p>
<p id="2"></p>
在这种情况下,p#1
将被选中,假设#myelement
是有问题的元素。
我想用一些选择器选择一个元素,并选择最接近<p>
它的元素(注意 p 不与前一个元素嵌套)。我该怎么做?我试过closest()
了,但这只有在元素嵌套时才有效。
编辑:最接近的定义:
<a id="myelement"></a>
<p id="1"></p>
<p id="2"></p>
在这种情况下,p#1
将被选中,假设#myelement
是有问题的元素。
鉴于您的 HTML 是:
<a id="myelement"></a>
<p id="1"></p>
<p id="2"></p>
最接近()不起作用的原因是:
获取与选择器匹配的第一个元素,从当前元素开始,向上遍历 DOM 树。
如果 'p' 标记始终是下一个元素,则使用next()代替:
$('#myelement').next();
但是,如果您最终可以在第一个标签a
和第一个p
标签之间添加任何其他元素,那么获得它的一种方法是使用nextAll()
$('#myelement').nextAll('p').eq(0);
还有许多其他方法可以<p>
为您获取该元素。
您可以使用其中一个.siblings()
或.next()
在您的情况下使用,但我相信.next
如果您的数据始终采用您发布的形式,那将是更好的选择。
这是一个例子:
HTML
<a id="myelement">a</a>
<p id="1">1</p>
<p id="2">2</p>
jQuery
$("#myelement").click(function(){
console.log($(this).next("p").attr("id"));
console.log($(this).siblings("p")[0].id);
});
您将看到上述控制台日志报告和1
.
http://jsfiddle.net/gpinto/PTFgG/1/
function findFirstParagraph() {
var siblings = $('#myElement').siblings();
siblings.each(function(index) {
if ( $(this).attr('id') == 1) {
$(this).css('background-color', 'red');
}
});
}
try using next()
http://api.jquery.com/next/
as per the latest OP edit: jsfiddle.net/KXPwx/9
You tried .next() or .prev().. Maybe use .eq(0)??
You can also use .parent() or .parents('.selector')
尝试.find()
有许多功能可以做类似的事情,但对我来说,使用类似的东西$(this).find( 'selector here' )
或创造$(' id or class selector here').find('id/class here')
奇迹大声笑。
祝你好运