Tilde"〜"在jquery选择器中获取意外的集合

时间:2015-09-17 12:25:04

标签: javascript jquery jquery-selectors

如果我能找到具有以我的值开头的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+"']")

时问题已得到解决

1 个答案:

答案 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>