Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery属性选择器,在值周围加上引号';行不通_Javascript_Jquery_Jquery Selectors_Knockout.js - Fatal编程技术网

Javascript jQuery属性选择器,在值周围加上引号';行不通

Javascript jQuery属性选择器,在值周围加上引号';行不通,javascript,jquery,jquery-selectors,knockout.js,Javascript,Jquery,Jquery Selectors,Knockout.js,我得到了一个类名为.aa\u ant的输入,其中包含值1 现在,当我加载页面时,我会这样做(案例1): 它按预期输出1 现在,我将其更改为(案例2): 它停止工作了。此外,如果我将1更改为a,它也会停止工作(情况1和2) 我做错了什么 更新:.aa_ant是一个敲除控件: <input class='aa_ant' data-bind='value: aa_ant, readOnly: is_readonly' /> 这可能是个问题吗 更新:使用length属性,我想看看是否有任何

我得到了一个类名为
.aa\u ant
的输入,其中包含值
1

现在,当我加载页面时,我会这样做(案例1):

它按预期输出
1

现在,我将其更改为(案例2):

它停止工作了。此外,如果我将
1
更改为
a
,它也会停止工作(情况1和2)

我做错了什么

更新:.aa_ant是一个敲除控件:

<input class='aa_ant' data-bind='value: aa_ant, readOnly: is_readonly' /> 这可能是个问题吗

更新:使用length属性,我想看看是否有任何输入元素包含该值(我不希望任何元素都有该值)。此外,我知道我可以获取所有的.aa_ant元素,并对它们进行枚举,以查看是否有人包含该值,但我希望使用jquery-ish

更新: 以下是供参考的实际解决方案:

if($('.aa_ant').filter(function(index) { if(this.value.indexOf("1") >=0) { return true ; } return false ; }).length>0 ) { alert("Error"); } if($('.aa_ant')。过滤器(函数(索引){ 如果(此.value.indexOf(“1”)>=0){ 返回true; } 返回false; })(长度>0){ 警报(“错误”); }
谢谢你的帮助

您想用.length属性实现什么。length将返回页面上匹配选择器的数目

如果试图查找输入值的长度,则需要执行以下操作:

alert($('.aa_ant[value*="1"]').val().length)
以下是您的工作示例:

下面是一个如何获取输入长度的示例:


使用.length属性您想要实现什么。length将返回页面上匹配选择器的数目

如果试图查找输入值的长度,则需要执行以下操作:

alert($('.aa_ant[value*="1"]').val().length)
以下是您的工作示例:

下面是一个如何获取输入长度的示例:


您的控件似乎没有
属性。如果未在标记中设置元素的属性,CSS属性选择器将无法读取该属性,这就是它失败的原因

这是jQuery实际上不完全符合所宣传的CSS规范的情况。
[value*=1]
之所以能够正常工作,唯一的原因是它不是一个有效的CSS选择器,因此在现代浏览器中,它跳过了浏览器的本机选择器API,而是使用jQuery的选择器引擎,该引擎支持不带引号的数字,并且可以基于
value
属性返回,即使
属性没有出现在标记中,也会得到预期的结果。其他选择器
[value*=“1”]
[value*=a]
[value*=“a”]
都是有效的CSS,但与您的控件不匹配,因为它在标记中没有
value
属性,所以您不会得到任何结果

如果需要根据输入控件的实际值来查询它,请查看是否可以通过其他方式来识别它(Knockout.js是否给它一个ID?),否则必须执行一些或,并使用检查其值以获得正确的元素。选择器应仅用于基于静态属性(即值通常不会改变的属性)的查询,而不用于动态属性,如
输入
元素的

使用
.filter()
.val()
的快速示例:


控件似乎没有
属性。如果未在标记中设置元素的属性,CSS属性选择器将无法读取该属性,这就是它失败的原因

这是jQuery实际上不完全符合所宣传的CSS规范的情况。
[value*=1]
之所以能够正常工作,唯一的原因是它不是一个有效的CSS选择器,因此在现代浏览器中,它跳过了浏览器的本机选择器API,而是使用jQuery的选择器引擎,该引擎支持不带引号的数字,并且可以基于
value
属性返回,即使
属性没有出现在标记中,也会得到预期的结果。其他选择器
[value*=“1”]
[value*=a]
[value*=“a”]
都是有效的CSS,但与您的控件不匹配,因为它在标记中没有
value
属性,所以您不会得到任何结果

如果需要根据输入控件的实际值来查询它,请查看是否可以通过其他方式来识别它(Knockout.js是否给它一个ID?),否则必须执行一些或,并使用检查其值以获得正确的元素。选择器应仅用于基于静态属性(即值通常不会改变的属性)的查询,而不用于动态属性,如
输入
元素的

使用
.filter()
.val()
的快速示例:


这两种方法对我都适用:如果将
1
更改为what?这两种方法对我都适用:如果将
1
更改为what?使用length属性,我想查看是否有任何输入元素包含该值(我不希望任何元素具有该值)使用length属性,我想查看是否有任何输入元素包含该值(我不希望任何元素具有该值)@Serafeim您可以使用
filter
方法。@Serafeim您可以使用
filter
方法。
alert($('.aa_ant[value*="1"]').val().length)
$('.aa_ant').filter(function() { return $(this).val().indexOf('1') >= 0; });