2014-05-14 45 views
2

具有動態生成的html,其上有一個選擇元素。 我們可以在裏面選擇一個選項,它可以正常工作。jQuery.html()將刪除選擇選項的所選屬性

只是想:

<div id="test"> 
    <select> 
     <option value="1">1</option> 
     <option value="2" selected="selected">2</option> 
    </select> 
</div> 

然後嘗試使用:

var htmlstr= jQuery("#test").html(); 
alert(htmlstr); 

得到HTML字符串。在IE中,它是可以的。 但是在chrome(最新版本)中,該選項的所選屬性從字符串中刪除。 警報(htmlstr)返回結果是這樣的:

<div id="test"> 
    <select> 
     <option value="1">1</option> 
     <option value="2">2</option> 
    </select> 
</div> 

所選= 「選擇了」 丟失。

使用jQuery-1.9.1.min.js

我不知道這jQuery的問題還是chorme的問題。

非常感謝你! 或者我怎樣才能以另一種方式獲取上面的html?我需要將它保存到數據庫中。

你, 伊萬

+0

[小提琴](http://jsfiddle.net/cse_tushar/V344S/)做工精細的Chrome版本'34.0.1847.131 M'以及在'34.0.1847。137 m' –

+0

我在chrome中正確得到了html。檢查這個小提琴http://jsfiddle.net/NuYN8/。沒有修改,但它的工作正常 –

+0

使用哪個版本的鉻?對我來說,它在鉻版本34.0.1847.131米正常工作。 http://jsfiddle.net/XLULL/ –

回答

0

我終於找到了問題。 這是我誤解了元素的行爲。我曾經想過,當我選擇一個元素時,它會將我選擇的選項自動標記爲「selected = seleted」。 不是不是。

我改變了我的HTML爲:

<select id='conditionpref"+connum+"' style='width:65px;' onchange ='javascript:return changeconditionpref.apply(this);' name=''><option value='0'>0</option><option value='1'>1</option></select> 

,並設置JS代碼:

function changeconditionpref() 
{ 
var id=jQuery(this).attr("id"); 
    jQuery("#"+id+" option:selected").attr('selected','selected'); 
} 

現在問題已經一去不復返了。

謝謝大家!

你, 伊萬

1

代碼工作在最新的Chrome細jQuery中的每一個版本,我測試。我希望提醒只輸出選擇,如果沒有父DIV ......這就是下面的jsfiddle輸出:

$(function() { 
    var div = $('<div id="test"/>'), 
     opt = $('<option/>'); 
    $('<select/>').html(opt.clone().val(1).text(1)) 
    .append(opt.clone().val(2).text(2).attr('selected','selected')) 
    .appendTo(div.appendTo('body')); 
    console.log($('#test').html()); 
}); 

http://jsfiddle.net/fiddleyetu/886Y3/

輸出

<select><option value="1">1</option><option value="2" selected="selected">2</option></select> 

注意:請仔細檢查以確保頁面上沒有其他元素具有相同的id =「test」。如果存在,那麼瀏覽器的結果會不一致,因爲不能保證不同的瀏覽器會以同樣的方式處理無效的HTML。