0

我有一个带有复选框的模态 jQuery UI 对话框:

            $dialog = $('<div id="formContainer"></div>')
                        .html('<div>some text</div><input id="accept_cb" type="checkbox" checked="checked"/> Uncheck this box to disable.<br />')
                        .dialog({
                                autoOpen: false,
                                title: 'Title ',
                                modal: true,
                                buttons: {
                                    "Close": function() {
                                        checkboxHandler();
                                    },
                                    Cancel: function() {
                                        $( this ).dialog( "close" );
                                    }
                                }
                            });


            function checkboxHandler(){
                if ($('#accept_cb').is(':checked'))
                {
                  alert('checked');
                }else{
                  alert('not checked');
                }
            }

当我第一次打开对话框时,一切正常并提醒正确的检查状态。但是当我第二次返回时,无论是第一次,状态都保持“已检查”或“未检查”。我需要改变什么?

我也试过().attrand ().prop,同样的结果。

4

3 回答 3

1

在您的代码中,我看到一个语法错误。注意你的'. 另请参阅 jQuery API 以获取有关复选框http://api.jquery.com/checked-selector/的更多信息

于 2012-05-02T06:43:27.390 回答
1

关闭对话并不会破坏它。尽管您没有提及您是如何打开对话的,但我想您只是再次运行此代码。如果是这样,您正在创建所有这些元素的副本。当您在页面上有 2 个具有相同 ID 的元素时,您的浏览器将始终返回第一个,因此您的“无论它是第一次”。

“关闭”处理程序中的对话,或者.remove()不要每次都重新创建内容。

于 2012-05-02T06:48:25.177 回答
1

简单的解决方案。您需要为复选框使用类并将选择器与 一起使用:last,因为 ui 模态对话框复制了此元素。

function checkboxHandler(){
   if ($('.accept_cb:last').is(':checked'))
   {
      alert('checked');
   }else{
      alert('not checked');
   }
}
于 2012-07-11T15:26:38.437 回答