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