2013-10-22 37 views
6

以下显示的是FF中的一个和两个警报,但Safari中只有一个。 Safari中的任何内容都不兼容? if($('div[data-foo="'+bar+'"').hasClass('baz')){jQuery选择器的数据属性在Safari中不起作用

jQuery的

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

HTML

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

回答

15

你缺少一个右括号。此外,在这种情况下bar是一个字符串文字,而不是一个变量。这工作:

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

,也可以定义棒作为变量:要真的是

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

(不知道如何在Firefox中工作,不然之前。)

+1

我遇到了类似的问题,这是因为缺少左括号“]”。 Mac Safari会抛出一个错误,而基于Windows的浏览器即使出现语法错误也能识别选择器。 –

0

取决于做警报声明的地方,你可以做一个快捷方式:

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

这应该创建一个啤酒rt陈述bar

相关问题