10

以下显示 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>
4

2 回答 2

21

您缺少右括号]。此外,在这种情况下, 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 中是如何工作的。)

于 2013-10-22T21:47:24.317 回答
1

根据您想要在警报语句所在的位置真正执行的操作,您可以使用以下方法创建快捷方式:

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

这应该会创建一个警报,说明bar

于 2013-10-22T21:57:32.873 回答