jQuery MultiSelect取消选中Index,而不是val()

时间:2012-08-29 18:06:58

标签: jquery multi-select

我会努力使这个明智...... 使用jQuery multiselect复选框插件。通过AJAX调用动态添加选项。当用户选择项目/选项并关闭选择框时,该项目将与“删除”图标一起添加到UI。该图标动态添加了一个ID,以便用户可以从UI中删除该项目,我也想从关闭的选择框中取消选中该项目。添加的ID是所选选项的“值”,以便我可以将UI上的项目与选择框中的选项相关联。当值很短(少于2个单词)时,这很有效。但是当值大于2个单词时,我得到一个错误:“无法识别的表达式: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

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

我会发布整件事,但它很大而且有些复杂。基本上我只想取消选择Index而不是Value。

1 个答案:

答案 0 :(得分:0)

使用

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

而不是

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