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

时间:2013-10-22 21:44:30

标签: 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');
}

HTML

<div data-foo="bar" class="baz"></div>

2 个答案:

答案 0 :(得分:18)

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

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

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

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

(不知道之前在Firefox中是如何工作的。)

答案 1 :(得分:0)

根据您在警告声明所处的位置,您可以使用以下命令创建快捷方式:

$('div.baz').each(function(){
  alert($(this).data('foo'));
});

这应创建一个说明bar

的提醒