jQuery Selector的数据属性在Safari中不起作用

Jos*_*eph 8 jquery

以下显示FF中的警报一和二,但在Safari中只显示一个.此行中的任何内容都与Safari不兼容吗?if($('div[data-foo="'+bar+'"').hasClass('baz')){

jQuery的

alert('one');
if($('div[data-foo="'+bar+'"').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div data-foo="bar" class="baz"></div>
Run Code Online (Sandbox Code Playgroud)

may*_*lle 18

你错过了一个结束括号].此外,bar在这种情况下是字符串文字,而不是变量.这有效:

alert('one');
if($('div[data-foo="bar"]').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}
Run Code Online (Sandbox Code Playgroud)

或者您可以将bar定义为变量:

var bar = "bar";
alert('one');
if($('div[data-foo="' + bar + '"]').hasClass('baz')){
    alert('two');
}else{
    alert('three');
}
Run Code Online (Sandbox Code Playgroud)

(不知道以前在Firefox中是如何工作的.)

  • 我遇到了类似的问题,这是因为缺少右括号"]".即使语法错误,基于Windows的浏览器也可以识别选择器,Mac Safari会抛出错误. (3认同)