我在jquery中编写了一个隐藏按钮的代码,同时在调用代码块的功能时单击按钮。这是代码的片段
var successBtn = $("#sucessBtn"); //declare the button
function successConfirm(){
// Hide the button
successBtn.hide();
successBtn.on("click", function() {
alert("in onclick");
successBtn.click();
});
}
我试图在javascript块中调用该函数,如图所示
onClose: function(){
successConfirm();
alert('window closed');
}
执行块中的警报,但动态点击对接的警报永远不会被执行。请问有什么不对
答案 0 :(得分:1)
successConfirm
挂钩事件处理程序,它实际上没有点击按钮。它还通过触发点击来设置无限循环,以响应点击,这将是不好的。
如果您希望它单击该按钮,请让它执行此操作而不是(或除此之外)连接事件处理程序:
function successConfirm(){
// Hide the button
successBtn.hide();
successBtn.on("click", function() {
alert("in onclick");
});
successBtn.click(); // <=== Moved this
}
请注意,上面每次都会添加一个新的点击处理程序。您可能希望将这两项内容分开,可能会在设置代码中的某处将on
调用放在 successConfirm
之外。
在评论中你说过:
我已移动它但未点击按钮
这向我建议,当您执行var successBtn = $("#sucessBtn");
时按钮不存在。也许你太早做了这件事。事先没有特别好的理由,只需在successConfirm
中执行此操作:
function successConfirm(){
$("#successBtn")
.hide()
.on("click", function() {
alert("in onclick");
})
.click();
}
答案 1 :(得分:0)
在你的代码中,你触发了onClick
事件中的点击...所以点击等待点击(你得到我......)
你能做的是:
successBtn.on("click", function() {
alert("in onclick");
});
successBtn.click();
答案 2 :(得分:0)
对 .trigger()的调用会以与用户自然触发事件时相同的顺序执行处理程序:
successBtn.trigger('click');
successBtn.on("click", function() {
alert("in onclick");
});
答案 3 :(得分:0)
<强>问题:强>
你在这里做了一个烂摊子,在这个代码中附加点击事件时触发了点击事件:
successBtn.on("click", function() {
alert("in onclick");
successBtn.click(); //This is misplaced here
});
为什么要将click
事件附加到按钮上,successConfirm
函数内部,最好放在它之外。
<强>解决方案:强>
我已更新您的代码,因此现在有意义了:
var successBtn = $("#sucessBtn"); //declare the button
//Attach the click event
successBtn.on("click", function() {
alert("in onclick");
});
function successConfirm() {
// Hide the button
successBtn.hide();
//click the button
successBtn.click();
}
注意:强>
您最好在successBtn.hide();
功能之外移动successConfirm
隐藏初始按钮,这样就可以在调用successConfirm()
之前隐藏它。