2013-04-04 52 views
0

使用JavaScript處理<select>標記時,我遇到了Internet Explorer 8的奇怪行爲。打開後無法使用JavaScript處理選擇標記

說我想添加一個<option><select>,比在jQuery我可以使用類似$("select").prepend(myOption)。但是,如果<select>元素是使用JavaScript 創建的,則用戶已打開選擇項,但這不起作用,Internet Explorer(8)不顯示新選項。在Firefox中這工作得很好。

一個例子:

<!doctype html> 
<head> 
    <meta charset="utf-8"> 
    <title>Test</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script> 
    <script> 
     function prependOption(select) { 
      $("select").each(function(i, element) { 
       var option = $('<option value="abc">xyz</option>'); 
       $(element).prepend(option); 
      }); 
     } 
     $(function() { 
      var container = $("#container"); 
      container.append($("select.prototype").clone()); 
     }); 
    </script> 
</head> 
<body> 
<input type="button" value="Click" onclick="prependOption(this)" /><br /> 
<div id="container"> 
    <select class="prototype"> 
     <option>Lorem ipsum</option> 
    </select> 
</div> 
</body> 
</html> 

當你打開網頁,你會看到兩個選擇框 - 一個正常和一個使用jQuery的clone()創建。如果您單擊該按鈕,則會爲它們添加一個選項。現在,如果您單擊並打開兩個選擇框並再次單擊該按鈕,則僅向第一個選擇框添加一個新選項。

任何想法如何解決這個馬車行爲?我需要將選項添加到使用JavaScript創建的<select>

+0

錯誤正在發生的地方我不確定...但是IE9及以下版本已知與.innerHTML屬性有關。 http://webbugtrack.blogspot.ca/2007/08/bug-274-dom-methods-on-select-lists.html以及關注活動的問題http://webbugtrack.blogspot.ca/2009/02/ bug-487-onclickonfocus-bugs-on-select.html如果在封面下,jQuery試圖在不克服IE漏洞的情況下操縱這些漏洞,它可能會有問題。 – scunliffe 2013-04-04 13:41:02

回答

0

的解決方案是避免clone() - 顯然它不能在網上正常運行Explorer 8的

var select = $('<select></select>'); 
select.append($("select.prototype option").clone()); 
container.append(select); 

因此,而不是克隆<select>,我創建了一個新的,只克隆它的選擇。

0

試試這個:

new Object($("select.prototype")) 
+0

如果你的意思是在container.append()調用中,那麼'new Object($(「select.prototype」))'也不是'new Object($(「select.prototype」)。clone())'不會幫幫我 – Mifeet 2013-04-04 13:34:13