jquery选择器用于输入值

Vin*_*pin 35 jquery input jquery-selectors

我这里有代码..

 <div>
    <input type="hidden" value="hello" />
 </div>

 <div>
    <input type="hidden" value="world" />
 </div>
Run Code Online (Sandbox Code Playgroud)

是否可以在内部选择值为"hello"的div并将所选div的颜色更改为红色......?

 $("div input[value='hello']").css("background","red"); //i have this in mind
                                                        //but i think its wrong:D
Run Code Online (Sandbox Code Playgroud)

任何帮助请..

Bol*_*ock 46

您想要选择输入,然后选择其父级div:

$("input[value='hello']").parent("div").css("background", "red");
Run Code Online (Sandbox Code Playgroud)

  • 根据问题,这是100%正确答案,但值得注意的是,这对用户可以更改的选择或文本输入不起作用.Pebbl的解决方案解决了这个问题. (3认同)

Peb*_*bbl 39

正如对于遇到这个问题的人的未来注释一样,这些答案在搜索特定属性时是正确的,即在HTML中硬编码value属性 - 根据问题完全正确.但是,如果用户在任何时候更改了字段的值,则不更新value 属性,只有元素的value 属性.这会以选择实际具有不同当前值的元素的形式导致意外行为......相反 - 或者至少在我找到更好的方式之前 - 我一直在使用以下内容:

jQuery.extend(
  jQuery.expr[':'],
  {
    /// check that a field's value property has a particular value
    'field-value': function (el, indx, args) {
      var a, v = $(el).val();
      if ( (a = args[3]) ) {
        switch ( a.charAt(0) ) {
          /// begins with
          case '^':
            return v.substring(0,a.length-1) == a.substring(1,a.length);
          break;
          /// ends with
          case '$':
            return v.substr(v.length-a.length-1,v.length) == 
              a.substring(1,a.length);
          break;
          /// contains
          case '*': return v.indexOf(a.substring(1,a.length)) != -1; break;
          /// equals
          case '=': return v == a.substring(1,a.length); break;
          /// not equals
          case '!': return v != a.substring(1,a.length); break;
          /// equals
          default: return v == a; break;
        }
      }
      else {
        return !!v;
      }
    }
  }
);
Run Code Online (Sandbox Code Playgroud)

上面创建了一个新的jQuery伪选择器,可以这样使用:

$('input:field-value(^test)');
Run Code Online (Sandbox Code Playgroud)

这将选择以"test"值开头的所有输入,或者:

$('input:field-value(*test)');
Run Code Online (Sandbox Code Playgroud)

这将选择包含"test"的所有输入值.

也支持!不是,$结束或=等于......