.click事件在jquery中不起作用

时间:2011-08-27 16:19:50

标签: jquery jquery-ui

我的页面中有以下脚本:

$(document).ready(function () {
    $('.RemoveLink').click(function () {

        //dialog box
        $('#dialog').dialog({
            autoOpen: false,
            width: 400,
            modal: true,
            resizable: false
        });

        //end dialog box


        var fileAddress = this.id;
        var parent=$(this).parent().parent();
         $('#dialog').dialog('open');

        $('#dialog').dialog({ /*Initialising a confirmation dialog box (with  cancel/OK button)*/
            buttons: {
                "delete": function () {
                    $(this).dialog('close');

                    $.ajax({

                        url: "url",
                        data: { id: fileAddress },
                        success: function (mydata) {
                        parent.hide();
                            //$('#FileThumbs .ImageFileItem[id=' + fileAddress + ']').hide();
                        },
                        type: "GET"
                    });
                },
                "cancle": function () { //if the User Clicks the button "cancel"
                    $(this).dialog('close');
                }
            }
        })
        return false;
    });
     $('.ResponseLink').click(function () {
        var idval = this.id;
        $.ajax({
            url: "url",
            data: { id: idval },
            dataType: 'html',
            success: function (mydata) {
                $("#ContactArea").empty().append(mydata);
            },
            type: "GET"
        });
        return false;
    });
});

你可以看到我也使用jquery ui拨号盒。当我单击带有“RemoveLink”类的链接时,它可以正常运行并弹出对话框,但在我点击“ResponseLink”类的链接然后单击带有“RemoveLink”的链接后,该页面不会显示对话框和链接作为普通链接。

你能帮帮我吗?

已更新:我使用的是asp.net mvc及其部分视图。我在部分视图中放了一些表单,并使用Ajax.BeignForm()方法对表单进行异步发送,但有一点。为了使验证能够使用Ajax.BeignForm(),我应该引用必要的脚本,即使我在一个调用局部视图的视图中引用了主题。我删除了那些重新引用的脚本,现在再次显示对话框,但我在表单上丢失了客户端验证!!!!!

1 个答案:

答案 0 :(得分:0)

使用.delegate代替.click

$('#ContactArea').delegate('.RemoveLink', 'click', function (e) {...

在您的情况下,您将click事件附加到附加Click事件处理程序时出现的.RemoveLink元素。清空并清空后,这些元素将替换为未附加事件处理程序的新元素集。

使用.delegate会确保#ContactsArea内的内容发生变化,但其中的.RemoveLink元素会继续处理。在文档中阅读更多内容。