jquery 选择器中的波浪号“~”获得了意外的集合
Tilde "~" in jquery selector obtains unexpected set
我有一个特定的值,正在检查是否可以找到具有以我的值开头的 Id 属性值的单选按钮:
if($("input:radio[id^="+myValue+"]").length > 0)
{
// some logic
}
对于我的特定约定,myValue 的计算结果应为 ~STR_2
,因此导致以下选择计算结果 "input:radio[id^=~STR_2]"
。
我的页面中没有以这样的id开头的单选按钮~STR_2
,但是获取的选择包含页面上的所有单选按钮并且长度大于零。
我知道波浪号 ~
运算符用于查找包含特定值的字符串,但它用作 ~=
而不是 =~
.
我希望任何人都可以解释这是怎么发生的,以及在一个选择器中完全拥有 ^=~
意味着什么。
注意:当我用单引号把值$("input:radio[id^='"+myValue+"']")
包起来时问题就解决了
我无法解决确切的问题,但这似乎是一个 jQuery 错误。
我使用的是 jQuery 库 1.6,我已经在多个 jQuery 版本上尝试过这个示例,并且版本号开始逐渐上升。选择在 jQuery 版本 1.8 上出现以下错误。
Uncaught Error: Syntax error, unrecognized expression:
input:radio[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>
我有一个特定的值,正在检查是否可以找到具有以我的值开头的 Id 属性值的单选按钮:
if($("input:radio[id^="+myValue+"]").length > 0)
{
// some logic
}
对于我的特定约定,myValue 的计算结果应为 ~STR_2
,因此导致以下选择计算结果 "input:radio[id^=~STR_2]"
。
我的页面中没有以这样的id开头的单选按钮~STR_2
,但是获取的选择包含页面上的所有单选按钮并且长度大于零。
我知道波浪号 ~
运算符用于查找包含特定值的字符串,但它用作 ~=
而不是 =~
.
我希望任何人都可以解释这是怎么发生的,以及在一个选择器中完全拥有 ^=~
意味着什么。
注意:当我用单引号把值$("input:radio[id^='"+myValue+"']")
我无法解决确切的问题,但这似乎是一个 jQuery 错误。
我使用的是 jQuery 库 1.6,我已经在多个 jQuery 版本上尝试过这个示例,并且版本号开始逐渐上升。选择在 jQuery 版本 1.8 上出现以下错误。
Uncaught Error: Syntax error, unrecognized expression: input:radio[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>