2013-10-22 11 views
6

以下のショーはFFで1つと2つの警告を表示しますが、Safariでは1つのみ表示します。この行にあるものは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 stating bar

関連する問題