2

安らかなWebサービスからjquery-uiを設定するのに問題はありません。

// get data from web-service
var subjectResponse = data.SiteSubjectResponse;

// The jquery-UI selectmenu
var $subjectOptions = $('#subjectOptions');

for(var i = 0; i < subjectResponse.length; i++)
{
    // Build the Option
    var $option = $('<option/>');
    var subjectName = subjectResponse[i].name;
    var subjectId = subjectResponse[i].id;
    $option.text(subjectName).val(subjectId);
    $subjectOptions.append($option);
}
// set the default item to the first item                                    
$('#subjectOptions').val(subjectResponse[0].clinicalTrialSubjectId);

// refresh jquery-ui selectmenu
$('#subjectOptions').selectmenu('refresh', true);

問題は、この選択メニューにある以前の項目を削除したいということです。そのため、標準のjqueryでこれが機能していたことがわかります。

// clear all options first, if any are there, used to work
$('#subjectOptions').find('option').remove().end();

このソリューションが StackOverflow にもリストされているのを見ましたが、どちらも機能していないようです。

$("#subjectOptions option").each(function(index, option) {
        $(option).remove();
 });
// refresh list after we have removed all options
$('#subjectOptions').selectmenu('refresh', true);

また、selectmenu にオプションを指定せずに更新しようとすると、エラー メッセージが表示されます。私のグーグルによると、これは selectmenu のバグであり、最新の安定版にはまだ含まれていないようです。

したがって、すべてのオプションを削除し、選択した項目をjquery-ui selectmenuから削除するための明確でシンプルなソリューションを探しています。誰かが私にリンクやドキュメントを参照したり、例を提供したりできれば、それは素晴らしいことです. JQuery UI Selectmenu のドキュメントをまだ見ておらず、Google で解決策を探していなければ、この質問を投稿することはありません。

助けてくれてありがとう!

4

1 に答える 1

7

助けてくれてありがとう、しかし現時点での本当の答えは:

$('#myOptions').find('option').remove().end();
$('#myOptions').selectmenu('destroy').selectmenu({ style: 'dropdown' });

最初の行は、select からオプションを実際に削除する検索ジョブを実行しますが、JQueryUI selectmenu によって生成された追加の HTML を変更するものではありません。

また、JQuery UI (1.11.2) の最新バージョンには非常に厄介なバグがあり、これが最新の安定版リリースにいつ導入されるかはわかりません。バグは、selectmenu ドロップダウン オプションに [li] オプションがない場合、'refresh' が失敗することです。 http://bugs.jqueryui.com/ticket/10662

JQueryUI チーム、またはバグを報告する人は、次の修正について心配する必要がないように、回避策も投稿する必要があります。回避策はまさに私が持っているとおりです:

$('#myOptions').selectmenu('destroy').selectmenu({ style: 'dropdown' });

これにより、選択が破棄され、再作成され、問題が解決します。

おそらく、JQueryUI チームは次のことを考慮する必要があります。

$('#myOptions').selectmenu('クリア');

[li] から既存のオプションを削除してから、selectmenu を更新します。それは本当にいいでしょう。

これが他の誰かに役立つことを願っています。

于 2015-02-05T20:11:14.773 に答える