2016-04-07 17 views
2

Basit soru: neden çalışmıyor?Öğe seçerek metin ve özellik

if ($('a:contains("some text"):first').attr("class") == "someclass") { 
    this.css('background-color', 'red'); 
} 
+0

Bu 'bu' ne başvuruyor? Eğer jQuery nesnesi değilse, bu bir problemdir. Size daha iyi bir cevap vermek için HTML'nizi ideal olarak görmeliyiz. –

+0

Bu, ilk satırda bulunan öğesine başvurmalıdır. – Ondrej

+0

Ne yazık ki bu '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'anahtar sözcüğü nasıl çalışır? Daha fazla bilgi için cevabımı görün. –

cevap

2

this ilk satırında bulunan <bir> elemanı başvurmalıdır.

this anahtar sözcüğünün kapsam belirleme biçimi budur. Bu durumda this, bu kodun yerleştirildiği her yere ait kapsamı gösterir. İhtiyacınız olanı yapmak için doğrudan a öğesine başvurmanız gerekir. Bu deneyin:

var $a = $('a:contains("some text"):first'); 
if ($a.attr("class") == "someclass") { 
    $a.css('background-color', 'red'); 
} 

Ayrıca seçilen a eleman birden sınıfları varsa yukarıdaki başarısız olacağını unutmayın. Eğer jQuery'nin hasClass() yöntemi kullanabilirsiniz düzeltmek için: daha iyisi

var $a = $('a:contains("some text"):first'); 
if ($a.hasClass("someclass")) { 
    $a.css('background-color', 'red'); 
} 

Veya, sen if ifadenin gerek kalmadan aradığınız sınıfı tarafından doğrudan unsuru seçebilirsiniz.

$('a.someclass:contains("some text"):first').css('background-color', 'red'); 

Nihayet ad-hoc ekleyerek .css() kullanmak yerine JS gerektiğinde bu sınıfları eklemek için addClass() kullanmak ardından ayrı stil stil kurallarını tanımlamak ve daha iyi uygulama olduğuna dikkat.

İlgili konular