2017-04-10 3 views
0

私はjQuery UI選択ウィジェットを持っています。jQueryは実際の選択オプションの属性を返さない

ウィジェットは、afterwordsウィジェットが適用されるhtmlのselectを返すAjax呼び出し後に完全に再初期化される可能性があります。

問題は、ウィジェットの初期化後に実際に選択された選択オプションが選択されていないことです。デバッグ時に

私はクロームデベロッパーツールのコンソールから次の出力を取得しています:

> thisWidget.element 
[<select name=​"main.model" id=​"ui-id-297" style=​"display:​ none;​">​<option selected=​"selected" value>​ Choose ​</option>​<option value=​"express">​ Express ​</option>​</select>​] 

> thisWidget.element.find('option') 
[<option selected=​"selected" value>​ Choose ​</option>​, <option value=​"express">​ Express ​</option>​] 

> thisWidget.element.find('option:selected') 
[] 

> thisWidget.element.find("option[value='']") 
[<option selected=​"selected" value>​ Choose ​</option>​] 

> thisWidget.element.find("option[value='']:selected") 
[] 

私はそれはウィジェットが初期化されているHTMLは正しいですが、空の値を持つオプションは、それそれにもかかわらず、選択されていない見ての通りすべきだ。

なぜこの現象が発生しますか?

答えて

0

私はその理由を知りました。

ウィジェットが破棄されて再初期化される前に選択値を設定していました。

そうなイベントは次のようにoccuringた:

// getting re-rendered html select through ajax call 
mySelect.val('foo') // setting the value of select which in fact may not have option with such value 
// ...then destroy event occurs 
// ... and then widget is reinitiazlied 

だから、おそらく(mySelect.val('foo'))未破壊ウィジェットと値の設定でinterlieving、このような行動の原因でした。

関連する問題