如果我能找到具有以我的值开头的Id属性值的单选按钮,那么我有一定的价值:
if($("input:radio[id^="+myValue+"]").length > 0)
{
// some logic
}
对于我所拥有的某个约定,myValue将评估为~STR_2
,从而导致以下选择评估"input:radio[id^=~STR_2]"
。
我的页面中没有以这样的id ~STR_2
开头的单选按钮,但是获得的选择包含页面上的所有单选按钮,长度为>比零。
我知道代字号~
运算符用于查找包含特定值的字符串,但它用作~=
而不是=~
。
我希望任何人都可以解释这是如何发生的,以及在一个seletor中完全^=~
是什么意思。
注意:当我使用单引号包装值$("input:radio[id^='"+myValue+"']")
答案 0 :(得分:0)
我无法解决确切的问题,但这似乎是一个jQuery错误。
我使用的是jQuery库1.6,我在多个jQuery版本上尝试了这个例子,并开始逐渐增加版本号。这些选择在jQuery版本1.8上给出了以下错误。
未捕获错误:语法错误,无法识别的表达式: 输入:无线电[ID ^ =〜]
检查在小于1.8的jQuery版本上运行的代码段,选择获取所有无线电甚至没有id属性的无线电:
var myValue = "~item34";
console.log($("input:radio[id^="+myValue+"]").length);
console.log($("input:radio[id^="+myValue+"]"));
if($("input:radio[id^="+myValue+"]").length > 0)
{
$("#result").html("selection found " + $("input:radio[id^="+myValue+"]").length + " radio buttons");
}
else
{
$("#result").html("no selection");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<input type="radio" name="test" id="item1" value="1"/> A
<input type="radio" name="test" id="item2" value="2"/> B
<input type="radio" name="test" id="item3" value="3"/> C
<input type="radio" name="test" id="item4" value="4"/> D
<input type="radio" name="test" value="5"/> E
<input type="radio" name="test" id="item6" value="6"/> F
<input type="radio" name="test" id="item7" value="7"/> G
<br />
<br />
<p id="result"></p>