我有这个HTML,如果元素包含特定文本,我试图在点击时返回false。
这是我的HTML:
<ul>
<li id="1"></li>
<li id="2"></li>
<li id="3"></li>
<li id="4"></li>
<li id="5"></li>
<li id="6">text</li>
<li id="7"></li>
</ul>
使用Javascript:
$("ul").on('click', 'li', function (e) {
var value = $(this).attr('id');
if ("#" + value + ":contains(\"text\")"){ // Something similar to this
return false;
};
alert('test');
});
如果元素包含单词'text',我该如何返回false。
示例:http://jsfiddle.net/wSvLD/(这会对所有内容返回false)
答案 0 :(得分:1)
你非常接近!
$("ul").on('click', 'li', function (e) {
if($(this).text() == "text"){
return false;
};
alert('test')
});
答案 1 :(得分:1)
你需要在contains(“text”)
中转义那些引号或者将单引号与双引号组合使用....
此外,值var应该在事件函数内。
编辑:
$("li").click(function (e) {
var value = $(this).attr('id');
if ( $('#' + value + ':contains("text")').length != 0 ){
return false;
}
alert('test');
});
:contains返回一个jQuery对象,因此您需要检查对象的长度以查看它是否包含匹配项。
答案 2 :(得分:1)
$("li").click(function(){
$(this).text() == "text" ? return false: return "something else";
});
但是如果您想要做的是使用所有的点击功能而不是带有“text”的那个,你应该这样做:
$('li:not(:contains("text"))').click(function(){
//whatever you are trying to achieve
});
答案 3 :(得分:1)
试试这个:
$('li:not(:contains(text))').click(function() {
alert('test');
});