关于动态输入值的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+']')