动态输入值的jQuery选择器

时间:2011-06-20 15:14:18

标签: jquery jquery-selectors filter

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

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

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

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

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

5 个答案:

答案 0 :(得分:3)

由于@Neal's answer,您需要使用某种条件。简单的选择器不起作用。然而,.filter()就足够了:

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

那就是说,看起来就像你正在使用一个ID选择器,它最多可以选择一个元素,所以.filter()是过度的 - if...else真的是最有效的在这种情况下感觉。

答案 1 :(得分:3)

这应该有效:

$("#inputfield:text[value*='"+dynamicValue+"']").length

//will select text input #inputfield with a value containing dynamicValue.

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

答案 2 :(得分:1)

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

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

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

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

这有一些解决方法。一种是使用过滤器:

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");
}

答案 3 :(得分:1)

Manji的答案比选定的答案简单,尽管再次简单。我无法让这个为我工作:

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

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

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

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

答案 4 :(得分:-1)

您想使用属性选择器:

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