如果某个值不在列表中(列表是特定类的第一个实例),我想执行一个操作。
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
答案 0 :(得分:2)
您必须使用.is(selector)
检查列表是否包含该文本。
尝试,
if (! $('.links_ul:first li').is(':contains(' + myInputValueVal + ')'))
答案 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!");
}
});