Javascript 为什么在jQuery对话框中调用ajax需要“self”引用?

Javascript 为什么在jQuery对话框中调用ajax需要“self”引用?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,如果检测到特定模式,以下jquery函数将打开一个教程对话框。我最近添加了一个“不再显示”复选框,这样用户就可以决定不想再看到弹出窗口,其中包括一个ajax调用,用于设置一个会话变量来存储此设置。在我添加了此引用之前,我一直很难让ajax调用正常工作。有人知道为什么需要这个吗?UserDisclesh应该选择具有相应ID的输入,我已经确认该ID在该项目的代码库中没有其他地方使用。下面的代码是有效的,但我对jQuery还是相当陌生的,我有兴趣了解更多关于它为什么能像编写的那样工作的信息 jQuer

如果检测到特定模式,以下jquery函数将打开一个教程对话框。我最近添加了一个“不再显示”复选框,这样用户就可以决定不想再看到弹出窗口,其中包括一个ajax调用,用于设置一个会话变量来存储此设置。在我添加了此引用之前,我一直很难让ajax调用正常工作。有人知道为什么需要这个吗?UserDisclesh应该选择具有相应ID的输入,我已经确认该ID在该项目的代码库中没有其他地方使用。下面的代码是有效的,但我对jQuery还是相当陌生的,我有兴趣了解更多关于它为什么能像编写的那样工作的信息

jQuery代码片段:

$('#tutorial').dialog
({
    show: "fade",
    title: "Helpful Hint",
    modal: false,
    close: function(event, ui)
    {
        if ($('#userDismiss', this).is(':checked'))
        {
            $.ajax
            ({
                type: 'POST',
                url: '/ajax/do-not-show-again.php'
            });
        }
    },
    buttons:
    {
        Okay: function()
        {
                $(this).dialog('close');
        }
    }
});
这是包含上述jquery代码中用于对话框的div的php代码段

    <div class="no-disp" $tutorial>
        <p>This is a tutorial message</p>
        <br />
        <input id="userDismiss" type="checkbox" name="dismiss">Don't show me this again</input>
    </div>

因为你正在做一些事情$this.dialog'close';或者在接收到evenement事件的元素上测试条件

this您的意思是this是$'userdisclesh',this?该语句中的this为选择器提供上下文。这与说$'tutorial'是一样的。找到'userdismission';它是一个类似于$this的范围选择器。查找“userdismission”,但这没有任何意义,因为ID应该是唯一的。您确定在任何时候都没有复制教程div吗?您需要在ID选择器上指定作用域的唯一原因是页面上存在该ID的多个实例。id不是唯一的,或者对话框已从DOM分离。由于后者没有发生,前者很可能是原因。是否每次打开此对话框时都要为此对话框创建html?如果是,是否在关闭后将其删除?