2017-09-29 100 views
0

我有這樣的HTML片段:了jQuery找出父標籤

<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> 

爲什麼標籤不被下面的jQuery發現:

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

其中$(這)是選擇選擇器。

UPDATE

嘗試this小提琴。

回答

2

hasClass('.label-red')中刪除.。它希望類的名稱不是CSS選擇器。

+0

我刪除了。但仍未找到它。 –

+0

它看起來像標籤標籤必須包裝選擇標籤爲了這個工作https://jsfiddle.net/bigalnz/stezu0cr/11/ –

+0

是的,它似乎是'最接近()'的情況下看起來父母而不是兄弟姐妹。不幸的是,儘管有[綜合兄弟組合](https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_selectors),但它只能選擇一個元素,如果它跟在第一個之後,而不是之前。如果你不想嵌套'select's,可能[this](https://stackoverflow.com/questions/2310270/jquery-find-closest-previous-sibling-with-class)會有所幫助。 – Mark

0

有由@馬克指出除去從hasClass('.label-red').其次選擇器需要一個父這樣的HTML需要被修改,使得<label>標籤包裹<select>從而在原始jQuery選擇的錯誤:

<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> 

或者如果HTML保持不變導航到父form-group再找到這樣:

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