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