如果值不在列表中,如何执行操作?

时间:2014-02-19 09:59:34

标签: jquery

如果某个值不在列表中(列表是特定类的第一个实例),我想执行一个操作。

HTML

<ul class="links_ul">
    <li>test</li>
    <li>test2</li>
</ul>

<input id="my_input">

<button class="click_me">click me</button>

的jQuery

$(document).on('click', '.click_me', function() {
    var myInputValue = $("#my_input");
    var myInputValueVal = myInputValue.val();
    if($('.links_ul:first li:not(:contains("' + myInputValueVal + '"))')){
        alert(myInputValueVal + " not in list");
    }
});

这会警告值是否不在列表中以及值是否在列表中。

的jsfiddle

http://jsfiddle.net/rwone/fz4AK/

4 个答案:

答案 0 :(得分:2)

您必须使用.is(selector)检查列表是否包含该文本。

尝试,

if (! $('.links_ul:first li').is(':contains(' + myInputValueVal + ')'))

DEMO

答案 1 :(得分:1)

试试这个

if (! $('.links_ul li').is(':contains(' + myInputValueVal + ')')) {
   alert(myInputValueVal + " not in list");
}

答案 2 :(得分:1)

试试这个,

$(document).on('click', '.click_me', function() {
    var myInputValue = $("#my_input");
    var myInputValueVal = myInputValue.val();

    var $li = $('.links_ul:first li').filter(function() {
        return $(this).text() === myInputValueVal;    
    });    

    if($li.length==0) {
        alert(myInputValueVal + ' not in the list');
    }
});

<强> DEMO

答案 3 :(得分:0)

我相信这有点清洁,更可重复使用:

function valueExists(selector, value) {

   var exists = false;
   $(selector).each(function () {
       if ($.trim(this.innerHTML) === value) {
           exists = true;
           break;
       }
   });

   return exists;

}

$(document).on("click", ".click_me", function () {

   var value = $("#my_input").value();

   if ( !valueExists(".links_ul > li", value) ) {
       alert("it's not in the list!");
   }

});