Javascript Jquery查找没有id、名称或类的特定H4
我有一个关于JQuery的简单问题 我有一个包含一些div的mainJavascript Jquery查找没有id、名称或类的特定H4,javascript,jquery,html,each,Javascript,Jquery,Html,Each,我有一个关于JQuery的简单问题 我有一个包含一些div的main,这些div具有动态id。每个子div中都有一个标记。这些h4没有任何id、类或名称。他们只是有一些文字在里面 我在说的是: <div id="main_div"> <div id ="div01"> <h4>Sometext01</h4> </div> <div id ="div02"> <h4>Som
,这些div具有动态id。每个子div中都有一个
标记。这些h4
没有任何id、类或名称。他们只是有一些文字在里面
我在说的是:
<div id="main_div">
<div id ="div01">
<h4>Sometext01</h4>
</div>
<div id ="div02">
<h4>Sometext02</h4>
</div>
<div id ="div03">
<h4>Special Text!!!</h4>
</div>
<div id ="div04">
<h4>Sometext04</h4>
</div>
</div>
我知道我可以使用下面的jQuery函数来查找所需h4的父级
myFoundH4.parent()
但是我在通过h4的文本()或html()搜索h4时遇到了一些麻烦
你能帮我一下吗
非常感谢
几个小时后编辑:
多亏了@Bhushan,我可以做我真正想做的事。它只是有一个限制:我的用户不能更改h4文本,也不能给几个h4提供包含我字符串的相同名称。
对于另一个解决方案,也可以尝试@rory,它对我不起作用,但已经被其他人测试过,而且似乎比contains更好。您尝试过吗
如果有其他
标签包含包含特殊文本的文本!!!,但您不想选择它们,可以使用.filter()
,如下所示:
但是,如果有多个
与此文本匹配,它仍然可以匹配多个元素。您可以使用过滤器()
:
这将确保文本属性上的精确匹配,而不是:contains
选择器将提供的部分匹配<代码>过滤器也应该更快。试试这个:
$(function(){
var parentId = $('main_div').find('h4:contains("Special Text!!!")').parent().attr('id');
});
更新:罗伊·麦克罗森有一个很好的解决方案。试试这个:
可能使用
match()
该h4
有什么独特之处?这是它的文本值吗?在这种情况下,你只能通过它们的文本或html,或者它们的顺序(它们在你的代码上实现的顺序)来找到它们@TCHdvlp我谦虚的请求是停止共享指向w3schools的链接。学习网络技术最差的地方。如果在h4s中实现,那么它也会选择“123Special Text!!!abcd!”@阿米贾法里:是的,会的。问题使它看起来似乎不是问题,但如果是的话,解决问题并不是那么难。OP明确表示他不想使用text()
或html()
,我是不是遗漏了什么?@AminJafari他说他和它们有问题,并不是说他不想使用它们。谢谢@Rorymcrossan,这是一个好的开始。。。除非它给我“未定义”。如果我只是尝试对$h4.parent()进行排序,它会显示。。所有h4的父母。。。因此,过滤器似乎不起作用。有什么想法吗?(我正在尝试使用contains,即使它不如filter有效)感谢@bhushan Kawadkar,对于我的特定应用,它可以工作!:)
var divId = $("h4:contains('Special Text!!!')").parent().attr('id');
var divId = $("h4:contains('Special Text!!!')").filter(function(i, elt) {
return $(elt).text() === 'Special Text!!!';
}).parent().attr('id');
var $h4 = $('h4').filter(function() {
return $(this).text() == 'Special Text!!!';
});
console.log($h4.parent().prop('id'));
$(function(){
var parentId = $('main_div').find('h4:contains("Special Text!!!")').parent().attr('id');
});
$("h4").each(function(inx, elem){
var pattern = "Special Text!!!", el = $(elem);
if(el.text() == pattern){
console.info(el.parent().attr("id"));
}
});
$("h4").each(function(){
if($(this).text() === 'Special Text!!!')
{
var pid = $(this).parents().attr("id");
alert(pid);
}
});