Javascript jQuery属性选择器-为什么使用引号?
在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=“
$("#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>`