Javascript .closest()返回未定义的
我有以下清单:Javascript .closest()返回未定义的,javascript,jquery,Javascript,Jquery,我有以下清单: <div id="saved"> <ul class="list-group" style="display: block;"> <li class="marked list-group-item">box-shadow:<span class="marked_text">0px 0px rgb(200,200,200)</span>;<a class="pull-right multipl
<div id="saved">
<ul class="list-group" style="display: block;">
<li class="marked list-group-item">box-shadow:<span class="marked_text">0px 0px rgb(200,200,200)</span>;<a class="pull-right multiple-shadows checkbox-active">Click</a>
</li>
</ul>
</div>
问题是.text()的值是空的,而.html()的值是未定义的。有什么想法吗?$。closest()的值是父项()。您需要的是$(this).sibbines(“span”)
。还要尝试限制jQuery中选择器的数量<代码>$('a.multiple-shadows')
已经足够了
编辑:如果您有多个span同级,要获取第一个span同级,请使用
$(this).sibbines(“span”).first()
最接近的
查找元素最接近的祖先。span
是a
标记的兄弟,因此最近的返回未定义的是正确的。您的a位于li
的内部,后者位于ul
的内部,后者位于div
的内部,因此这些是最接近的
将返回任何内容的唯一元素。由于span位于a
标记之前,您可以简单地使用.prev()
函数
$(this).toggleClass("checkbox-active");
var roll = $(this).prev().text();
console.log(roll);
Fiddle:.closest
“通过测试元素本身并在DOM树中向上遍历其祖先来匹配选择器”()。因此,.closest
将不匹配任何兄弟姐妹,而匹配祖先。相反,您可以使用.prev()
控制台记录您的此
并查看它指向什么
$(this).toggleClass("checkbox-active");
var roll = $(this).prev().text();
console.log(roll);
$("#saved").on("click", ".multiple-shadows",function(){
$(this).toggleClass("checkbox-active");
var roll=$(this).prev().text();
alert(roll);
});