Yalnızca kalın öğe belirli bir metin içeriyorsa jquery çalıştırmam gerekiyor. Neyi yanlış yapıyorum?Belirli bir metni içeriyorsa, jquery'yi çalıştırın
cevap
Tek tırnak işaretleri içinde, dizeyi ayıran tek tırnak işaretleri kullanmanın yanı sıra, if ifadesinin içinde bir jQuery seçici kullanıyorsunuz. This selector sadece b
etiketlerinizi "Bir alt kategori seçin" etiketini filtreler; ve sonra bu elemanların bir listesini döndürür. Bir boole döndürmez.
Bunun yerine, bu yüzden gibi
.contains()
yöntemi kullanın:
if($("b").contains("Choose a sub category")) {
// do stuff
}
Daha
here
EDIT okuyabilir:
:.contains()
yöntem kaldırılacaktır görünüyor, çünkü burada saf bir JS çözüm
var el = document.getElementById("yourTagId") // or something like document.getElementsByTagName("b")[0] if you don't want to add an ID.
if (el.innerHTML.indexOf("Choose a sub category") !== -1) {
// do stuff
}
Maalesef bu 'jQuery(). Includes' yöntemi artık mevcut değil ya da en azından tüm bunları kullanmak için kullandığım girişimde 'herhangi bir işlev çağrısı yok' hatası tetikleniyor. 'jQuery.contains' var, ancak bu, özellikle DOM öğeleriyle ve metin dizeleriyle kullanım içindir. Şahsen ben bir '' içerir' seçicisini yapılandırmak yerine bir yöntem çağrısı kullanmak isterim, bu yüzden jQuery bunu kaldırırsa oldukça can sıkıcı olur. – Pebbl
@Pebbl jQuery ile ilgili sorun budur. Burada sadece birkaç satır olduğu için yerel JS'yi daha iyi hale getirmek çok daha iyi. –
Bu çözüm metin için hiç işe yaramadıysa, artık [bu belge] (https://api.jquery.com/jQuery.contains/) uyarınca yanıt vermez ve yanıt artık doğru olarak işaretlenmemelidir. ovahernow'un çözümü, soruya gereken şekilde metin için çalışır. – Luke
Bir öğenin var olup olmadığını belirlemek için bunu her zaman kullandım:
tek tırnak ('') içineif ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/}
Mevcut öğeleri kontrol etmenin önerilen yolu olduğundan neden düşürmediğimi bilemiyorum: http://stackoverflow.com/questions/4592493/jquery-check-if-element-exists – ovaherenow
ben de; Downvoter'ın bu özel duruma adanmış bir jQuery '.contains() yöntemi olduğu kadar ideal görmediğine inanıyorum. Unutmayın, OP var olup olmadığını kontrol etmek istemiyor, sadece kalın etiketin metin içerip içermediğini görmek istiyor. Her iki çözümümüz de çalışırken, benimki sadece biraz daha doğru bir şekilde doğrudur. :) Yine de seni reddettim. :) –
Teşekkürler Tom. Ben de seninkile giderdim. Sadece mevcut kodunu düzeltmek istedim. Ben de seninkini kestim. – ovaherenow
if ($("b").has(":contains('Choose a sub category:')").length) {
/*Your Stuff Here*/
}
kullanım çift tırnak ("") ... Eğer dizesini kırılıyor tek tırnak içine tek tırnak kullanıyoruz. –