2011-09-25 58 views
1

我想添加組合框的選定值到其前面的跨度。但它失敗太難過了。 我用下面的代碼嘗試:我如何添加文本跨度使用jQuery

<span></span><select multiple ="multiple" ondblclick="$(this).css('display','none').prev().css('display','inline').addClass('sss').html($(this).val());">....</select> 

這裏有什麼錯誤?我怎麼能輕鬆做到這一點?

我希望它在雙擊事件中觸發。因爲雙擊組合框的選項後,它應該消失,選定的文本應該出現在範圍內

當然,我忘了說我的選擇框不是選擇框。它是一個lisstbox。即多個= 「多」

回答

2

您需要在您的select標記中添加option

<span></span> 

<select> 
    <option>Something</option> 
</select> 

JS

$('select').click(function(){ 
    $(this).css('display','none') 
     .prev() 
     .css('display','inline') 
     .addClass('sss') 
     .html($(this).val()); 
}); 

實施例: http://jsfiddle.net/jasongennaro/AKa9b/

EDIT

基於註釋在多個選項的情況下不工作,我修改爲:

$('select').change(function(){ 
    $('select option:selected').each(function(){ 
     $(this).parent().css('display','none') 
     .prev() 
     .css('display','inline') 
     .addClass('sss') 
     .html($(this).val()); 
    }); 
}); 

第二個例子:http://jsfiddle.net/jasongennaro/AKa9b/2/

+0

不工作在多個選項的情況 – KoolKabin

+0

固定@KoolKabin –

+0

這工作完美。雖然你忘了添加多個=「多個」選 – KoolKabin

3

試着這麼做:

$('select').change(
    function() { 
     $(this).prev('span').addClass('sss').text($(this).val()); 
    }); 

JS Fiddle demo

參考文獻:

+0

幹得漂亮@大衛。我想你錯過了腳本的'display:none'部分。看起來OP在選擇之後想要失去'select'。 –

+0

@JasonGennaro:是的,我把它作爲讀者的練習... =) –

+0

我希望它在雙擊事件中觸發。因爲在雙擊組合框的選項後,它應該消失,並且選定的文本應該出現在範圍內 – KoolKabin