如果<li>包含特定文本,则返回false </li>

时间:2011-12-02 19:05:38

标签: javascript jquery contains

我有这个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)

4 个答案:

答案 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对象,因此您需要检查对象的长度以查看它是否包含匹配项。

http://jsfiddle.net/8NuvP/

答案 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');
});