2009-08-31 71 views
1

HTML:在jQuery的clone()中丟失了什麼?

<div id="container"> 
    <select id="selector"> 
     <option value="">--</option> 
     <option value="Service">Service</option> 
     <option value="Sales">Sales</option> 
     <option value="Marketing">Marketing</option> 
     <option value="Finance">Finance</option> 
     <option value="Engineering">Engineering</option> 
     <option value="Management">Management</option> 
    </select> 
</div> 
<input type="button" id="test" /> 

腳本,而不克隆()的作品,沒事:

$('#test').click(function(){ 
    $('#container').find('select').each(function() { 
     var $elem = $(this); 
     var value = $elem.val(); 
     alert(value); 
    }); 
}); 

與克隆()腳本,不工作:

$('#test').click(function(){ 
    $('#container').clone().attr('id', 'container2').find('select').each(function() { 
     var $elem = $(this); 
     var value = $elem.val(); 
     alert(value); 
    }); 
}); 
+0

值無法檢索,你可以嘗試它。 – omg 2009-08-31 13:17:24

+0

是否點擊了按鈕? – omg 2009-08-31 13:21:34

+0

首先選擇一個非「 - 」,第一個樣本將彈出選定的值 – omg 2009-08-31 13:25:29

回答

2

我不知道這是問題,但你應該注意,當你克隆一個<select>元素時,如果它被選中用戶。爲了解決這個問題,您可以簡單地將DOM屬性應用於最初選擇的任何選項。例如。

$('#test').click(function(){ 

    var selectMenus = $('#container').find('select'); 

    $('#container').clone().attr('id', 'container2').find('select').each(function(i) { 

     /* See this: */ 
     $('option', this)[selectMenus[i].selectedIndex].selected = true; 

     var $elem = $(this); 
     var value = $elem.val(); 
     alert(value); 

    }); 

}); 

編輯:我不確定這是否是一個跨瀏覽器的問題,但它肯定會影響FF3.5。

+0

它在IE 7中正常工作。 – rahul 2009-08-31 13:31:14

+0

這無疑是一個很好的解決方案,歡呼! – omg 2009-08-31 13:37:15

相關問題