Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery属性选择器-为什么使用引号?_Javascript_Jquery_Attributes - Fatal编程技术网

Javascript jQuery属性选择器-为什么使用引号?

Javascript jQuery属性选择器-为什么使用引号?,javascript,jquery,attributes,Javascript,Jquery,Attributes,在jQuery中,当按属性值选择时,为什么需要将值括在引号“”中 如果我使用: $("#tab-list li a[href=" + href + "]" ).tab("show"); 然后我将得到一个语法错误: 您应该按照下面的代码编写: $("#tab-list").find('li').find("a[href='" + $href + "']"); 您必须使用href='+$href+'的原因是href是标记a的属性,$href是您想要筛选的变量这就是jquery的样子[name=“

在jQuery中,当按属性值选择时,为什么需要将值括在引号“”中

如果我使用:

$("#tab-list li a[href=" + href + "]" ).tab("show");
然后我将得到一个语法错误:


您应该按照下面的代码编写:

$("#tab-list").find('li').find("a[href='" + $href + "']");
您必须使用href='+$href+'的原因是href是标记a的属性,$href是您想要筛选的变量

这就是jquery的样子[name=“value”]。请注意引号。在下面的表达式中,选择具有匹配href的锚定标记元素

你真是太棒了。jQuery选择器语法的大部分是从CSS选择器语法派生的,因此一些规则来自CSS。如果您要查找的变量href中包含的值无效,则需要将所查找的值括在引号中,就像您在第一个代码示例中使用单引号所做的那样。当值包含空格时,不能省略引号。您的错误消息暗示href以空格开头。要获得更高的健壮性,请也转义该值:

差:$tablistlia[href=+href+]

好:$tab list li a[href='+href+']

更好:$tablistlia[href='+$.escapeSelectorhref+']


如果要查找的值中可能有引号,则需要进行转义。

这是因为在某个位置使用字符串变量时,它不会在字符串周围呈现“或”

例如,当您简单地执行此操作时

var someString = "Hello World";
console.log( someString );
您将看到,即使变量包含字符串,它也不会在字符串周围生成引号。为什么?因为每次想在某个地方使用字符串变量时,都必须删除该变量是多么不方便

实际上,字符串变量周围没有引号

获取href属性时,假设它看起来像href='www.example.com',只获取值,而不获取其周围的引号。这也很重要,您不希望发生这种情况:

var someString = "Hello World"; 
$("#someElm").text( someString );
// Produces a result
// where the html looks like this 
// `<div id="someElm">"Hello World"</div>`

希望有帮助

欢迎来到堆栈溢出!我认为将选择器分解为jQuery函数没有帮助。我认为你的过滤器调用被破坏了,因为选择器中缺少方括号。在您发布答案之前,最好先测试一下,例如在上。谢谢,我测试它时运行okGreat,但是将href重命名为$href应该没有什么区别。JavaScript允许其中一个作为变量名。也许您在考虑Perl或PHP?谢谢。我知道,但在这里,我想为用户设置$href是可变的,与属性href不同,所以需要'+$href+'嗯,我认为不需要它。对于jQuery对象,使用美元符号前缀变量名有点矛盾。
$("#tab-list li a[href= '" + href + "']" ).tab("show"); 
                        ^            ^
  //attribute selector starts        //attribute selector ends
var someString = "Hello World";
console.log( someString );
var someString = "Hello World"; 
$("#someElm").text( someString );
// Produces a result
// where the html looks like this 
// `<div id="someElm">"Hello World"</div>`