Если <li>содержит определенный текст, верните false - PullRequest
1 голос
/ 02 декабря 2011

У меня есть этот 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');
});

Как вернуть false, если элемент содержит слово 'text'.

Пример: http://jsfiddle.net/wSvLD/ (это возвращает false для всего)

Ответы [ 4 ]

1 голос
/ 02 декабря 2011

Попробуйте это:

$('li:not(:contains(text))').click(function() {
    alert('test');
});
1 голос
/ 02 декабря 2011

Вы были довольно близко!

$("ul").on('click', 'li', function (e) {
    if($(this).text() == "text"){
        return false;
    };
    alert('test')
});
1 голос
/ 02 декабря 2011
$("li").click(function(){
  $(this).text() == "text" ? return false: return "something else";
});

, но если вы хотите использовать функцию щелчка для всех, НО с текстом, вы должны сделать следующее:

$('li:not(:contains("text"))').click(function(){ 
      //whatever you are trying to achieve
});
1 голос
/ 02 декабря 2011

Вам понадобится экранировать эти кавычки в содержимом ("текст")

Или использовать одинарные кавычки в сочетании с двойными кавычками ....

Кроме того, значение var должно бытьвнутри функции события.

РЕДАКТИРОВАТЬ:

$("li").click(function (e) {

    var value = $(this).attr('id');

    if ( $('#' + value + ':contains("text")').length != 0 ){ 
        return false;
    }

    alert('test');

});

: содержит возвращает объект jQuery, поэтому вам необходимо проверить длину объекта, чтобы убедиться, что он содержит совпадение.

http://jsfiddle.net/8NuvP/

...