2013-10-22 13 views
6

में काम नहीं कर रहे डेटा विशेषता द्वारा jQuery चयनकर्ता निम्नलिखित शो एफएफ में एक और दो को चेतावनी देता है लेकिन सफारी में बस एक है। सफारी में इस लाइन में कुछ भी असंगत है? if($('div[data-foo="'+bar+'"').hasClass('baz')){सफारी

jQuery

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

एचटीएमएल

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

उत्तर

15

आप एक बंद कोष्ठक याद कर रहे हैं]। इसके अलावा, बार इस मामले में एक स्ट्रिंग अक्षर है, एक चर नहीं। यह काम करता है:

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

(सुनिश्चित नहीं हैं कि यह अन्यथा पहले फ़ायरफ़ॉक्स में काम कर रहा था।)

+1

मुझे एक समान समस्या का सामना करना पड़ा और यह गायब समापन ब्रैकेट "]" के कारण था। मैक सफारी एक त्रुटि फेंक देगा जबकि विंडोज-आधारित ब्राउज़र सिंटैक्स त्रुटि के साथ भी चयनकर्ता की पहचान कर सकता है। –

0

पर निर्भर करता जहां अलर्ट कथन होते हैं, आप शॉर्टकट बना सकते हैं:

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

यह एक एले बनाना चाहिए आरटी बताते हुए bar