2013-03-25 82 views
0

它怎麼可能獲得box_B optgroup的標籤名稱是基於box_A選擇的選項?Jquery獲取optgroup標籤及其子女

我使用以下功能試圖提醒box_A父標籤,但無法得到它,如果我更改爲var label = $(e).attr('value');,選項值顯示。

function showLabel(e){ 
    if($(e).attr('checked')=='checked'){ 
     var label = $(e).parent().attr('label'); 
     alert(label); 
    } 
} 

選擇框:

<select id="box_A" multiple="multiple"> 
    <optgroup label="Asia: Japan"> 
     <option value="1 - Toyota">1 - Toyota</option> 
     <option value="2 - Honda">2 - Honda</option> 
    </optgroup> 
    <optgroup label="Europe: German"> 
     <option value="3 - Mercedes">3 - Mercedes</option> 
    </optgroup> 
</select> 

<select id="box_B" multiple="multiple"> 
    <optgroup label="1 - Toyota"> 
     <option value="1A - Camry">1A - Camry</option> 
     <option value="1B - Yaris">1B - Yaris</option> 
    </optgroup> 
    <optgroup label="2 - Honda"> 
     <option value="2A - Civic">2A - Civic</option> 
    </optgroup> 
    <optgroup label="3 - Mercedes"> 
     <option value="3A - SL320">3A - SL320</option> 
    </optgroup> 

</select> 

調用該函數:

$(document).ready(function() { 

    $("#box_A").multiSelect({}, showLabel); 

} 

感謝。

+1

'showLabel'在哪裏被調用,並且你作爲'e'參數傳遞了什麼?另外,您缺少'optgroup'元素的結束標記。 – Zhihao 2013-03-25 03:25:14

+1

對於選項,沒有屬性'checked',而是使用'selected'或selectedIndexof。 – 2013-03-25 03:29:54

+0

對不起,我錯過了包含通話功能,請參閱我編輯的帖子。 – conmen 2013-03-25 03:37:56

回答

0

假設showLabel被調用,並傳遞一個jQuery事件對象被點擊的選項時,您可以使用此:

function showLabel(e){ 
    var $target = $(e.target); 
    if($target.is(':selected')){ 
     var label = $target.closest('optgroup').attr('label'); 
     alert(label); 
    } 
} 

編輯:

採取在看您發佈的插件後,看起來我上面的假設是錯誤的。 showLabel沒有被傳遞一個jQuery事件,而是傳遞了jQuery對象的點擊項目,這也是一個複選框,而不是一個選項。嘗試使用此代替:

function showLabel($target){ 
    if($target.is(':checked')){ 
     var label = $target.closest('optgroup').attr('label'); 
     alert(label); 
    } 
} 
+0

沒有運氣與您的提示。 – conmen 2013-03-25 03:56:37

+0

@conmen我已根據您發佈的插件鏈接更新了我的答案。當我要求鏈接時希望得到的是看到插件的任何可用文檔,而不是實際的代碼。 – Zhihao 2013-03-25 04:23:31

+0

這次警報使用價值'undefined'發出警告 – conmen 2013-03-25 04:29:29