Jquery find('*')使A标记加倍
Jquery find('*') doubling A tags
我对查找A标记的元素上的Jquery find('*')有点困惑。我的示例代码如下:
<ul>
<li id="cell1" data-link="Page 1">
<p>Example text</p>
</li>
<li id="cell2" data-link="Page 2">
<h2 class="story-body__crosshead">More from our Diet Debate series:</h2>
<p><a href="http://www.bbc.co.uk/news/health-35150598" class="story-body__link">Read: Is breakfast a waste of time?</a></p>
<p><a href="http://www.bbc.co.uk/news/health-35215686" class="story-body__link">Watch: How healthy is your breakfast?</a></p>
</li>
<li id="cell3" data-link="Page 3">Cell 3</li>
<li id="cell4" data-link="Page 4">Cell 4</li>
</ul>
Js代码
$(elem).find('*').each(function(){
if ($(this).html().indexOf('breakfast') > 0){
alert($(this).html());
}
});
但是,Alert是针对每个A标签向发出两次警报。它显示内部文本和外部文本(完整的html)。然而,我依赖于移动元素并替换它们,所以这段代码最终会在同一页面上输出两次链接。我是不是错过了一些显而易见的东西?
您的代码正在匹配a
标记和a
标记的任何祖先,因为*
匹配elem
(即您的LI)中的所有DOM元素。在您的示例中,它将匹配p
标记和a
标记。
使用仅针对a
标签的作用域选择器:
例如
// Elem here is the li about
$("a", elem).each(function(){
if ($(this).html().indexOf('breakfast') >= 0){
alert($(this).html());
}
});
或者使用:contains
:更简单
$("a:contains(breakfast)", elem).each(function(){
alert($(this).html());
});
注意:您的代码只允许包含breakfast
而不允许包含Breakfast
的文本(例如,如果它在开头并大写),因为检查区分大小写。
相关文章:
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- jQuery find() Issue
- 使用jquery Find()在复选框中查找图像
- 如何在jQuery中使用find
- 使用 jquery .find() 遍历按类和存储属性选择元素
- JQuery .find() 函数用于多个数组
- 如何在 jquery 中的 find() 中动态提供元素/标签
- jquery .find callback
- 通过 jQuery Find and Replace 将文本 URL 与 标记包装在一起
- jQuery 'this' 跟随一个 .find click 函数
- jQuery - find including self
- 当变量中的.find()项有多个匹配项时,jQuery问题
- Can not find Jquery
- jquery find关闭td中的span
- require.js cannot find jquery.js
- jQuery在.find()之后使用选择器
- jQuery类选择器vs缓存元素+find
- 在row.find jquery函数上未定义
- 添加动态元素.find() jquery
- application.js can't find jquery.ui.effect-blind