【发布时间】:2016-02-17 16:27:37
【问题描述】:
我会在调用ajax生成链接后模拟点击下载文件。
jQuery :
$(document).ready(function(){
$(".vignette-dl").click(function() {
var id = $(this).find("a").attr("value");
$.ajax({
type: "POST",
url: "testDL.php",
data: { dossier: $("#selectDossier").val(), id_doc: id },
success: function(result){
$("#secretDiv").html(result);
}
});
$(document).ajaxComplete(function(){
alert("test");
$("#forcedl")[0].click(function(){
alert("test42");
});
});
});
});
result var 在 secretDiv 中添加一个 id="forcedl" 的 html 链接并完美运行。
ajaxComplete 函数被调用是因为我看到了我的警报测试,但是点击模拟不起作用并且我没有看到警报 test42。
我不知道为什么..
【问题讨论】:
-
你为什么使用 [0]?
-
您正在尝试附加事件处理程序,而不是触发事件
-
@RoryMcCrossan 您应该将其添加为答案。还有 OP,请参阅文档:api.jquery.com/click
-
$("#forcedl").trigger('click');或$("#forcedl").on('click',function(){ alert("test42"); });不确定您在尝试什么,但最后一个会在每个 ajaxComplete 上添加新的事件处理程序,所以不好。 -
将
alert($("#forcedl").length);放在ajaxComplete 函数顶部的结果是什么?alert(JSON.stringify(result));在你的成功功能中还有什么作用?