日期:2014-05-16  浏览次数:20841 次

关于jquery属性过滤器什么时候该加引号?
html中代码

<dt><img src="images/list0.jpg" width="163" height="175" "/></dt>

如果我写成这样

$("img[src='images/list0.jpg']")//可以获取到元素
$("img[src=images/list0.jpg]")//不能获取到元素

为什么此处不加引号获取不到元素呢?加不加引号到底是根据什么来判断的呢 ?
------解决方案--------------------
你的问题应该是这样:在什么情况下不需要加引号呢?
答案就很明确了:在不产生歧义的情况下

images/list0.jpg
可以解释为字符串 images/list0.jpg
也可以解释为表达式 images / list0.jpg (变量 images 与 list0.jpg 的商)
这样就产生了歧义,所以 images/list0.jpg 应用引号括起
------解决方案--------------------
明确:
高版本中,只要能用querySelectorAll的高级语法就用querySelectorAll,不再做其他处理。不符合querySelectorAll要求就报错。

底版本,也就是还没用sizzle的版本,是自己处理的。
看,这个是没问题的。j-1.2.6
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../lib/jquery/jquery-1.2.6.js"></script>
<style>


</style>
</head>
<body>
<dt><img src="images/list0.jpg" width="163" height="175" name='wawa/wa'/></dt>


<script>

var $a = $("img[name=wawa/wa]");
//var $b = document.querySelectorAll("img[src= images/list0.jpg ]");
//var $b = document.querySelectorAll("img[name=wawa/wa]");


</script>

</body>
</html>