2017-09-29 2 views
0

Ich habe dieses HTML-Fragment:jQuery zu finden Eltern Label

<div class="form-group"> 
    <div class="col-sm-1"></div> 
    <label for="allquestion4" class="col-sm-6 control-label label-red">Question</label> 
    <div class="col-sm-1"></div> 
    <div class="col-sm-3"> 
    <select size="2" class="selectpicker" id="allquestion4" title="Choose"> 
     <option value="0">No</option> 
     <option value="1">Yes</option> 
    </select> 
    </div> 
    <div class="col-sm-1"></div> 
</div> 

Warum ist das Etikett nicht durch die folgende jQuery gefunden werden:

$(this).closest('label').hasClass('.label-red'); 

Wo $ (this) die Auswahl Picker ist.

UPDATE

Versuchen this Geige.

Antwort

2

Entfernen Sie die . von hasClass('.label-red'). Der Name der Klasse soll kein CSS-Selektor sein.

+0

Ich entfernte die. aber immer noch nicht gefunden. –

+0

Es sieht so aus, als ob die Label-Tags die Select-Tags umbrechen müssen, damit dies funktioniert https://jsfiddle.net/bigalnz/stezu0cr/11/ –

+0

Ja, es scheint so zu sein, dass 'engest()' nur betrachtet Eltern und nicht bei Geschwistern. Leider gibt es zwar eine [allgemeine Geschwisterkombination] (https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_selectors), aber es kann nur dann ein Element auswählen, wenn es dem ersten folgt, nicht wenn es darauf folgt geht voraus. Wenn Sie die 'select's nicht verschachteln möchten, hilft Ihnen vielleicht [this] (https://stackoverflow.com/questions/2310270/jquery-find-closest-previous-sibling-with-class). – Mark

0

ist ein Fehler in der ursprünglichen JQuery-Selektor ist, wie durch @ Mark entfernen die . vom hasClass('.label-red') zum anderen die Wähler braucht ein Elternteil, wies darauf hin, so dass die html geändert werden muss, so dass die <label> Tags die <select> so wickeln:

<label class="col-sm-6 control-label label-red">Question 
    <select size="2" class="selectpicker" id="allquestion4" title="Choose"> 
     <option value="0">No</option> 
     <option value="1">Yes</option> 
    </select> 
</label> 

Oder wenn die hTML gehalten wird gleich der übergeordneten Ebene form-group und dann wie diese finden:

$(this).closest('.form-group').find('select').hasClass('label-red')