【问题标题】:jQuery MultiSelect uncheck by Index, not by val()jQuery MultiSelect 按索引取消选中,而不是按 val()
【发布时间】:2012-08-29 18:06:58
【问题描述】:

我会尽量让这件事变得明智...... 使用 jQuery 多选复选框插件。选项是通过 AJAX 调用动态添加的。当用户选择一个项目/选项并关闭选择框时,该项目将与“删除”图标一起添加到 UI。该图标有一个动态添加的 ID,以便用户可以从 UI 中删除该项目,我也想从关闭的选择框中取消选中该项目。添加的 ID 是所选选项的“值”,以便我可以将 UI 上的项目与选择框中的选项相关联。当值很短(少于 2 个字)时,这很有效。但是当值大于 2 个字时,我得到一个错误:“unrecognized expression: checkbox[value=xxxxx]”。这个错误是从 jQuery 抛出的:

Sizzle.error = function( msg ) {
    throw new Error( "Syntax error, unrecognized expression: " + msg );
};

将实际值与“msg”进行比较,看来 jQuery 在 2 个单词后截断了 ID,因此无法将其与任何已知的 selectBox 值匹配。
好的,所以我决定使用所选项目的“索引”并将其添加到“删除”图标(连同一个标识符),这会将其与选择框中的所选选项相关联。当从 UI 中删除时,我剥离标识符,只使用索引。我的问题是我无法取消选中这个东西。我试过这个:

$('select#'+cOption).multiselect("widget").find(":checkbox[index="+delVal+"]").each(function() {
                this.click();   // Remove check from deleted option

没有错误,只是没有取消选中。

我会发布整个内容,但它相当大而且有些复杂。基本上我只想通过索引而不是值取消选中选定的选项。

【问题讨论】:

  • 什么是delVal?索引还是值?
  • 如前所述...“我剥离标识符并仅使用索引”。它是一个 0-4 之间的整数(最多 5 个选项)。

标签: jquery multi-select


【解决方案1】:

使用

$('select#'+cOption).multiselect("widget").find(":checkbox[index='"+delVal+"']").each(function() {
                this.click();  });

而不是

$('select#'+cOption).multiselect("widget").find(":checkbox[index="+delVal+"]").each(function() {
                this.click();  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多