所以我试图在HTML标签中获取特定文本,该标签是它的亲戚。问题是我有多个家长,这意味着我有多个电话和不同的文本。
举个例子:
<parent>
<child>
<grandchild class="wanted">Text</grandchild>
<grandchild></grandchild>
</child>
<child>
<grandchild></grandchild>
<grandchild></grandchild>
</child>
<child>
<grandchild class="calling"></grandchild>
<grandchild></grandchild>
</child>
</parent>
我的剧本
$(document).ready(function(){
$(".calling").click(function(){
var message = $(this).parent().siblings(".wanted").html();
});
});
问题在于我无法得到Text,而且我不知道是否需要解析,即使我已经尝试过了。 我希望你能帮助我。
答案 0 :(得分:1)
您可以.closest()
使用选择器"parent"
,.find()
使用选择器".wanted"
$(document).ready(function() {
$(".calling").click(function() {
var message = $(this).closest("parent").find(".wanted").html();
console.log(message)
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<parent>
<child>
<grandchild class="wanted">Text</grandchild>
<grandchild></grandchild>
</child>
<child>
<grandchild></grandchild>
<grandchild></grandchild>
</child>
<child>
<grandchild class="calling">click</grandchild>
<grandchild></grandchild>
</child>
</parent>
答案 1 :(得分:0)
您可以使用on()
附加事件处理程序,例如:
$("body").on("click", ".calling", function(){
// traverse several steps up to the parent, then back down to desired element.
var message = $(this).parents("parent").find(".wanted").text();
});
来自文档:
.parents()
和.parent()
方法类似,只是后者只在DOM树上运行一个级别。
答案 2 :(得分:0)
<parent>
<child> // Child 1
<grandchild class="wanted">Text</grandchild> // grandChild1
<grandchild></grandchild>
</child>
<child> // Child 2
<grandchild></grandchild> // grandChild2
<grandchild></grandchild> // // grandChild3
</child>
<child> // Child 3
<grandchild class="calling"></grandchild> // grandChild4
<grandchild></grandchild> // grandChild5
</child>
</parent>
如果只使用calling
类$('grandChild.wanted').text()
,只需点击grandChild4即可在grandChild1中获取文字。
如果有多个标签具有相同的.wanted
,则必须使用.each
&amp; $(this).text()
获取标记的文本内容
如果有多个.calling
类,那么
$('.calling').on('click',function(event){
$(this).closest('parent').find('.wanted').text().trim()
})
closest()
将始终在DOM树中向上移动并与第一个匹配的元素匹配。 trim
用于删除任何空格
答案 3 :(得分:0)
问题是我无法获得想要的文本,而且我不知道我是否 必须解析或不解析,即使我已经尝试过。我希望你可以 帮助我。
这是因为你正在做var message = $(this).parent().siblings(".wanted").html();
$(this) - &gt; calling
班(孙子)
$(this).parent() -> <child></child>(3rd one)
$(this).parent().siblings()
会提供其他<child>
个元素(第1个和第2个)
因此你应该做$(this).parent().siblings().find('.wanted')
,以便它可以在兄弟姐妹(<child>
)内找到孙子。
答案 4 :(得分:0)
正如@ Nikhilesh-k-v发布的那样,它一直给我三个不同孩子的价值,所以我不得不指定一点点。谢谢大家,感谢所有评论。
答案 5 :(得分:0)
有很多方法可以解决这个问题:查看所有这些
console.clear();
$(document).ready(function() {
$(".calling").on('click', function() {
var messages = {};
messages.message0 = $(this).parents('parent').find(".wanted").html();
// or
messages.message1 = $(this).parent().parent().find(".wanted").html();
messages.message2 = $(this).parent('child').siblings().find(".wanted").html();
messages.message3 = $(this).parent('child').siblings().find(".wanted").text();
messages.message4 = $(this).parentsUntil('parent').siblings().find(".wanted").html();
messages.message5 = $('parent').find(".wanted").html(); // if only ONE parent
messages.message6 = $('parent').find("grandchild.wanted").text(); // if only ONE parent and in grandchild element
messages.message7 = $('parent').find(".wanted").text(); // if only ONE parent
messages.message8 = $('parent').find(".wanted").first().text(); // if first ONE present if many
messages.message9 = $('body').find(".wanted").first().text(); // not recommended but...
messages.message10 = $('body').find(".wanted").first().text(); // not recommended but...
messages.message11 = $('parent').find(".wanted").first().text(); // not recommended but...
messages.message12 = $('parent').find('child').find('grandchild').filter(".wanted").text(); // not recommended but...
messages.message13 = $('grandchild.wanted').text(); // all of them...
messages.message14 = $('grandchild.wanted').eq(0).text(); // first of them...
messages.message15 = $('grandchild.wanted:first()').text(); // first of them...
console.dir(messages);
}).trigger('click');
});