1

javascriptを使用して選択メニューを動的に作成していますが、画面上に表示されません。私は何が欠けているのか分かりません。私はjQueryの2.2.4とjQuery-UIここ1.11.4レンダリングするjQuery-ui選択メニューを取得できません

を使用しています

は私のjavascriptです:jQueryを使ってレンダリングしていないときのメニューは罰金作成されている

var input = document.createElement('select'); 

for(var i = 0; i < settingOptions.length; i++) 
{ 
    var optionValue = new String(settingOptions[i]); 

    var option = document.createElement('option'); 
    option.setAttribute('value', optionValue); 
    option.innerText = optionValue; 

    if(optionValue.valueOf() === settingValue.valueOf()) 
    { 
     $(option).prop('selected', true); 
    } 

    input.appendChild(option); 
} 

$(function(){ 
    $(input).selectmenu(); 
}); 

。 .selectmenu()を標準HTML選択として呼び出さないと、メニューが表示されます。

さらに、select要素はDOM内にありますが、自動的にCSS属性 "display:none"が与えられます。 Chrom Developer Toolsを使用してその属性を切り替えると、標準のHTML選択が表示されます。

私は無名関数を使用して)(.selectmenuを起動しようとしただけでなく、document.ready、成功

$(document).ready({ 
    $(input).selectmenu(); 
} 

せずに私の選択は、私が戻ったときにjQueryオブジェクトを取得していますとして動作しているように見えるんしています私はChromeコンソールで操作を評価します。

アイデア?

TLDR答え:私のselectmenuの親要素をDOMに追加する前に.selectmenu()を呼び出していました。

答えて

1

select要素(変数named入力)はDOMに追加する必要があります。

document.body.appendChild(input); 

の作業フィドル:https://jsfiddle.net/beaver71/n4rvo8qy/

+0

私は、このオブジェクトが実際にテーブルを使用して複数のオブジェクト(の子としてネストされたんです画面上のさまざまな入力を整理するため、これは 'td'のネストされ、' tr'のネストされ、 'table'のネストされます)。明示的に追加する必要がありますか?または、私はちょうどappendChildを呼び出し、トップレベルの親を渡すことができますか?親テーブルをDOMに追加する前に.selectmenu()を呼び出しているので、私が*後に*呼び出す限り、推測しています。それでいいでしょう。 –

+0

はい、そうです。例えば、要素を既存のdivの子として追加することができます: '$("#mydiv ")。append($(input));' – beaver

関連する問題