Javascript Jquery委托/活动不起作用
我正在修改的系统使用jQuery1.5.1,这意味着.on不存在 我有一个表,在这个表中,我有多个链接列在一行中,当用户单击时,它会打开一个弹出窗口。我有下面的代码来创建一个弹出链接Javascript Jquery委托/活动不起作用,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在修改的系统使用jQuery1.5.1,这意味着.on不存在 我有一个表,在这个表中,我有多个链接列在一行中,当用户单击时,它会打开一个弹出窗口。我有下面的代码来创建一个弹出链接 <tr> <td class="view_detail_label"> </td> <td> @Html.ActionLink( training.Name.Name,
<tr>
<td class="view_detail_label">
</td>
<td>
@Html.ActionLink(
training.Name.Name,
"AddSurvey",
new
{
employeeId = Model.Id,
trainingId = training.Id
},
new
{
@class = "addSurvey"
}
)
<div class="result" style="display:none;"></div>
</td>
</tr>
为什么我也使用了委托方法,但它也不起作用。我的代表
功能:
$(document).delegate(".addSurvey", "click", function () {
$.ajax({
url: this.href,
type: 'GET',
cache: false,
context: this,
success: function (result) {
$(this).next('.result').html(result).dialog({
autoOpen: true,
title: 'Anket',
width: 500,
height: 'auto',
modal: true
}); //end of dialog
console.log($(this).next('.result'));
} //enf of success function
}); //end of ajax call
});//end of delegate
谢谢你的帮助
*编辑1当我点击弹出窗口时,它会复制响应。当我刷新页面并点击它,然后关闭响应三元组时,它会以某种方式被点击两次。什么可能导致这种尴尬局面?*
**EDIT2我通过使用close解决了上述问题:函数{console.logonClose;$'.surveyTable'.load'Home/detailsservey',{id:@Model.id};}。这样,我就可以重新加载div表,并可以单击任何弹出窗口。使用代替live。live已被弃用
$('a.addSurvey').on( 'click', function () {
}
使用而不是生活。live已被弃用
$('a.addSurvey').on( 'click', function () {
}
如果您正在使用live,则不需要第一次呼叫。尝试使用默认值,而不是返回false
如果您正在使用live,则不需要第一次呼叫。尝试使用默认值,而不是返回false
on方法是bind、live和delegate方法的新替代方法。请使用on。on方法是绑定、活动和委托方法的新替代方法。请在上使用。更改为:
$(".addSurvey").die().live("click", function (event) { event.stopPropagation();
……代码的其余部分 更改为:
$(".addSurvey").die().live("click", function (event) { event.stopPropagation();
……代码的其余部分 大家好,我解决了我的问题如下:在弹出窗口关闭时,我从服务器重新加载页面并重新呈现,现在它就像一个符咒。谢谢大家的时间和关注
$('a.addSurvey').live('click', function (e) {
var $this = $(this);
e.preventDefault();
$.ajax({
url: this.href,
type: 'GET',
cache: false,
context: this,
success: function (result) {
$(this).next('.result').html(result).dialog({
autoOpen: true,
title: 'Anket',
width: 500,
height: 'auto',
modal: true,
close: function () { console.log("onClose"); $('.surveyTable').load('Home/DetailsSurvey', {id:@Model.Id}); }
}); //end of dialog
console.log($(this).next('.result'));
}, //enf of success function
complete: function () {
console.log("Complete");
},
error: function () {
console.log("Error");
}
}); //end of ajax call
}); //end o
大家好,我解决了我的问题如下:关闭弹出窗口后,我从服务器重新加载页面并重新呈现,现在它就像一个符咒。谢谢大家的时间和关注
$('a.addSurvey').live('click', function (e) {
var $this = $(this);
e.preventDefault();
$.ajax({
url: this.href,
type: 'GET',
cache: false,
context: this,
success: function (result) {
$(this).next('.result').html(result).dialog({
autoOpen: true,
title: 'Anket',
width: 500,
height: 'auto',
modal: true,
close: function () { console.log("onClose"); $('.surveyTable').load('Home/DetailsSurvey', {id:@Model.Id}); }
}); //end of dialog
console.log($(this).next('.result'));
}, //enf of success function
complete: function () {
console.log("Complete");
},
error: function () {
console.log("Error");
}
}); //end of ajax call
}); //end o
他使用的是jQuery 1.5.1,它不支持在1.7中添加的内容。他使用的是jQuery 1.5.1,它不支持在1.7中添加的内容。使用您提供的代码,我可以在控制台中看到响应,但在弹出关闭后,弹出链接仍然不起作用。是什么原因导致了这种情况?是委派工作还是委派以不同的方式工作?查看刚才由@Undefine添加的答案我认为他的答案被删除了我缓存了它,但它替换了内容而不是打开了弹出窗口我可以更新我的答案以反映他所说的内容,但你对他添加的内容仍有疑问吗?是的,弹出窗口没有打开,相反,它使用您提供的代码替换页面内容。我可以在控制台中看到响应,但在弹出窗口关闭后,弹出窗口链接仍然不起作用。是什么原因导致了这种情况?是委派工作还是委派以不同的方式工作?查看刚才由@Undefine添加的答案我认为他的答案被删除了我缓存了它,但它替换了内容而不是打开了弹出窗口我可以更新我的答案以反映他所说的内容,但你对他添加的内容仍有疑问吗?是的,弹出窗口没有打开,相反,它会替换页面的内容。您是否检查了是否触发了成功回调?您可以创建错误或完整回调来检查此问题完成:函数{console.logTest;}'。每次我单击链接时,它都会将响应测试写入控制台,并且我对错误执行了相同的操作,但它不会在控制台中给出响应。它似乎起作用了。你检查过你的成功回调是否被解雇了吗?您可以创建错误或完整回调来检查此问题完成:函数{console.logTest;}'。每次我单击链接时,它都会将响应测试写入控制台,并且我对错误执行了相同的操作,但它不会在控制台中给出响应。他指定使用jQuery 1.5.1时,它似乎正在工作。我肯定他不想为了一次调用而升级。他已经指定使用jQuery 1.5.1。我肯定他不想为了一个电话而升级。谢谢你的回答,judson,但这不起作用,它不会在控制台上给出任何响应,不会触发ajax代码。它不会打开弹出窗口,但会替换页面内容。您是否尝试过在关闭时销毁对话框?将关闭事件添加到对话框,然后关闭:函数{$this.dialog'destroy'.remove;}我在关闭时销毁了对话框。我放置控制台日志以查看它是否进入函数。它进入功能并关闭。但是同样的问题也在发生。谢谢你的回答,judson,但这不起作用,它不会在控制台上给出任何响应,也不会触发ajax代码。它不会打开弹出窗口,但会替换页面内容。您是否尝试过在关闭时销毁对话框?将关闭事件添加到对话框,然后关闭:函数{$this.dialog'destroy'.remove;}我在关闭时销毁了对话框。我放置控制台日志以查看它是否进入函数。它进入功能并关闭。但同样的问题也存在 治疗。