【问题标题】:JQueryUI selectmenu - remove all optionsJQueryUI 选择菜单 - 删除所有选项
【发布时间】:2015-04-04 06:37:56
【问题描述】:

我从一个安静的网络服务中填充一个 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);

如果您尝试在选择菜单中没有选项的情况下进行刷新,那么您会收到一条错误消息,并且从我的谷歌搜索来看,这似乎是选择菜单的一个错误,它还不是最新稳定版本的一部分。

所以,我正在寻找一个清晰、简单的解决方案来删除所有选项,并从 jquery-ui 选择菜单中删除所选项目。如果有人可以向我推荐一个链接或文档,或者提供一个例子,那就太好了。 如果我还没有查看 JQuery UI Selectmenu 文档并在 Google 上搜索解决方案,我不会发布这个问题。

感谢您的帮助!

【问题讨论】:

  • 该小部件替换了大部分 HTML。如果您无法匹配 option 选择器 - 在初始化小部件后检查您的 HTML 并查看您可以使用哪些其他选择器

标签: jquery-ui jquery-ui-selectmenu


【解决方案1】:

感谢帮助,但此时真正的答案是:

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

第一行确实从选择中删除了选项,但这并没有改变由 JQueryUI 选择菜单生成的附加 HTML。

最新版本的 JQuery UI (1.11.2) 还有一个非常讨厌的错误,我不知道什么时候会在最新的稳定版本中引入。当SelectMenu下拉选项中没有[LI]选项时,错误是“刷新”将失败。 http://bugs.jqueryui.com/ticket/10662

JQueryUI 团队或报告错误的人也应该发布解决方法,这样人们就不必担心下一个修复。解决方法正是我所拥有的:

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

这将破坏选择,并重新创建它,这样就解决了问题。

也许 JQueryUI 团队应该考虑:

$('#myOptions').selectmenu('clear');

从 [li] 中删除现有选项,然后为我们刷新选择菜单。那真是太好了。

我希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    相关资源
    最近更新 更多