Dizenin alt dize içerip içermediğini nasıl kontrol edebilirim?
Ürün seçeneklerini bir açılır menüde görüntüleyen bir alışveriş sepetim var ve "yes" seçeneğini seçerlerse, sayfadaki diğer bazı alanları görünür hale getirmek istiyorum.
Sorun, alışveriş sepetinin metinde her ürün için farklı olabilen fiyat değiştiriciyi de içermesidir. Aşağıdaki kod çalışıyor:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Ancak bunun gibi çalışmayan bir şey kullanmayı tercih ederim:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Eylemi yalnızca seçilen seçenek "Yes" kelimesini içeriyorsa gerçekleştirmek istiyorum ve fiyat değiştiriciyi yok sayacağım.
957
3
Bunun gibi:
...veya tilde operatörünü kullanabilirsiniz:
Bu işe yarar çünkü
indexOf()
, dize hiç bulunamazsa-1
döndürür.Bunun büyük/küçük harfe duyarlı olduğunu unutmayın.
Büyük/küçük harfe duyarlı olmayan bir arama yapmak istiyorsanız, şunları yazabilirsiniz
Ya da,
Bunun için search veya match kullanabilirsiniz.
str.search( 'Yes' )
eşleşmenin konumunu veya bulunamazsa -1 değerini döndürür.
Başka bir yol:
Firefox, Safari 6 ve Chrome 36 üzerinde test edilmiştir