Pet*_*one 4 jquery jquery-selectors
我正在尝试将click事件添加到由Telerik ASP.NET小部件生成的选项卡中.为了实验的目的,我已经将生成的HTML片段提升到静态页面中:
<HTML>
<HEAD>
<TITLE>sandpit</TITLE>
<SCRIPT TYPE="text/javascript" SRC="jquery-1.9.1.js"></SCRIPT>
<SCRIPT>
$(document).ready(function(){
var foo = $("span.rtsTxt");
var bar = foo.filter("[innerText='More']")
bar.on('click',function(){alert('click');});
alert('ready');
});
</SCRIPT>
</HEAD>
<BODY>
<ul>
<li class="rtsLI">
<a class="rtsLink rtsAfter">
<span class="rtsOut">
<span class="rtsIn">
<span class="rtsTxt">Preferences</span>
</span>
</span>
</a>
</li>
<li class="rtsLI">
<a class="rtsLink rtsAfter">
<span class="rtsOut">
<span class="rtsIn">
<span class="rtsTxt">More</span>
</span>
</span>
</a>
</li>
</ul>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
调试显示foo包含两个预期的项目.但是,我无法弄清楚选择第二个语法,其中innerText的值是"更多".
问题是我如何在过滤器表达式中如图所示或直接在选择器字符串中表达innerText =='More'?
尝试:contains选择器:
var bar = foo.filter(":contains('More')")
Run Code Online (Sandbox Code Playgroud)
这是一个显示它工作的jsfiddle 演示。
警告:虽然这适用于问题中的 html,但:contains选择器将匹配包含给定文本的任何元素,而不仅仅是文本等于给定文本的元素。(正如@RAS 在下面的评论中指出的那样。)
另一种选择将返回对象的元素的方法是使用这样的过滤器 :
$(".rtsTxt").filter(function() {
return $(this).text() == "More";
});
Run Code Online (Sandbox Code Playgroud)