2013-07-03 20 views
10

Bir açılanmda seçilen değere göre bazı değerler alan bir ajax işlevi var. Bazı alanları bir alt dizeye göre etkinleştirmeyi/devre dışı bırakmayı deniyorum. Ben ateş çalışmak, 'içerir' ama krom test ve safari nesnejQuery: içerir() Firefox'ta çalışır, ancak Chrome/Safari'de değil

if ($d.attr("embed").contains('$var_2$')) { 
    //do something 
} else { 
    // do something else 
} 

o tüm tarayıcılarda çalışır içerir bir alternatif var mı 'hayır yöntem içeriyor bulunur söylüyor bulundu?

cevap

18

String.contains değil jQuery.contains yoktur. Bunun nedeni, işlevi bir jQuery-Object değil, .attr s dönüş değeriyle kullanmaktır.

$d.contains('$var_2$') 

ama bu sadece belirtilen özelliğin ancak bunun yerine bütün eleman arama unutmayın:

jQuery.contains() (wich çapraz tarayıcı çalışır), bunun yerine bu yapabileceğini kullanmak.

yani ne büyük olasılıkla String.indexOf() kullanıyor yapmak istiyorum (aynı zamanda wich çapraz tarayıcı çalışır): ayrıntılı açıklama için

$d.attr("embed").indexOf('$var_2$') != -1 
+0

Teşekkür ki yaradı! IndexOf'un bir alternatif olarak önerildiğini görmüştüm ve denedim ama sözdizimi koparmam gerekiyordu çünkü istenen sonuçları elde edemedim. Verilen sözdizimiyle mükemmel çalışır. Tekrar teşekkürler. – richj

+0

rica ederim. – oezi

+0

Sadece bu güncellemenin bir güncellemesi: Mozilla devs, bu yöntemi ES 6 için Firefox 48'de 'includes 'olarak değiştirmeye ve uyumluluk nedenlerine karar verdi. – beendr

3

indexOf'u kullanabilirsiniz, tüm tarayıcılarda çalışmalıdır. Kullanmakta olduğunuz

if ($d.attr("embed").indexOf('$var_2$') > -1) { 
    //do something 
} else { 
    // do something else 
} 
İlgili konular