2013-05-25 275 views
1

選擇,我堅持了這個問題對幾乎一天一個選項...選擇標籤:默認情況下

簡單的SELECT列表看起來像這樣:

 <select id="slide_number"> 
      <option value="slide_1">Slide 1</option> 
      <option value="slide_2">Slide 2</option> 
      <option value="slide_3">Slide 3</option> 
      <option value="slide_4">Slide 4</option> 
     </select> 

而且我用這個代碼,刪除選定的屬性,並再次將其添加到正確的選項。

$('#slide_number').change(function() { 
     $('#slide_number option:selected').removeAttr('selected'); 
     $('#slide_number :selected').each(function() { alert($(this).find('#slide_number :selected')) }); 
     $("#slide_number option[value='slide_" + _t._current_slide + "']").attr('selected',''); 
    }); 

一切都將是完美的,但幻燈片2後,不能正常工作,它autoselects第一個選項,甚至鍍鉻我看到的代碼是改變和選擇的標籤被正確地添加到其他選項。

在Safari上的iPad中,我看到當我選擇選項3時,它同時簽署選項1和選項3,這是我認爲導致該問題的原因,但我無法擺脫那種自動選擇1個選項:/

我加入這個警告,它表明,即使除去所選屬性後,選項1仍處於選中狀態:(

感謝您的時間和想法......

+0

請解釋使用此代碼的邏輯'$(「#slide_number option [value ='slide_」+ _t._current_slide +'']「).attr('selected','');'。 –

+0

以及你想在'change'事件中得到/做什麼? –

+0

這是按值從列表中選擇正確的幻燈片。當我右轉時,我改變_current_slide號碼,並觸發$('#slide_number).trigger('change'),以便更新列表。 更改事件只是將列表中選定的屬性更改爲當前的屬性。 我看到的是當我將多個='多個'添加到選擇標記時,一切正常,只是選擇本身正在改變爲我不想要的列表 – SuddenHero

回答

0

試試這個使用jQuery v1.9.1 +

$('#slide_number').change(function() { 
    $("option[value='slide_" + _t._current_slide + "']", this).prop('selected', true); 
    $(':selected', this).each(function() { 
     alert($(this).text()); 
    }); 
}); 
+1

這是什麼魔法!爲什麼使用prop而不是attr? – SuddenHero

+0

**在jQuery 1.6 **之前,'.attr()'方法在檢索某些屬性時有時會考慮屬性值,這可能會導致行爲不一致。 **從jQuery 1.6 **開始,['.prop()'](http://api.jquery.com/prop/)方法提供了顯式檢索屬性值的方法,而'.attr()'檢索屬性。 –

+1

非常感謝! – SuddenHero

相關問題