关于动态输入值的jQuery选择器

如何在输入字段上使用:contain() ,例如

#inputfield包含动态值5.938,我想使用$("#inputfield:contains('5.938')")

但这不起作用,我在jsFiddle上提供了一个演示。

我不想使用if(element.val() == '5.938')因为我需要一个临时选择器而不是if/else语句。

我也不是指使用[value=5.938]因为值会改变。

由于@ Neal的回答 ,你需要使用某种条件。 简单的选择器不起作用。 .filter()就足够了:

 $('#inputfield').filter(function () { return $(this).val() == '5.938'; }); 

也就是说, 看起来你正在使用一个ID选择器,它最多可以选择一个元素,所以.filter()是过度的 – if...else在这种情况下确实最有意义。

这应该工作:

 $("#inputfield:text[value*='"+dynamicValue+"']").length //will select text input #inputfield with a value containing dynamicValue. 

jsfiddle: http : //jsfiddle.net/XEP4c/3/

这里的答案似乎令人困惑,因为没有明确的解释。 当您动态设置值时:

 $('#inputfield').val('5.938') 

使用选择器获取值不起作用:

 $('#inputfield[value="5.938"]') 

有一些解决方法。 一个是使用filter:

 var inputfield = $('#inputfield').filter(function () { return $(this).val() == '5.938'; }); if (inputfield.length) { alert("The input field has the value 5.938"); } 

或者您可以创建自己的选择器:

 (function($) { $.extend($.expr[':'], { val: function(el, i, attr) { return $(el).val() === attr[3]; } }); }(jQuery)); if ($('#inputfield:val("5.938")').length) { alert("The input field has the value 5.938"); } 

Manji的答案比选定的答案简单,虽然再次简单。 我不能让这个为我工作:

 $("input[value='userID']").remove(); 

连接字符串以插入动态变量可以改为:

 $("input[value='" + userID + "']").remove(); 

显然用你要做的任何事情替换.remove()。

您想使用属性选择器:

 $('#inputfield[value='+dynamicValue+']')