Javascript 如何将按钮传递到Jquery函数中?
我正在使用名为jQquery.confirm的第三方jQuery库。它在jQuery中提供对话框。单击特定类的按钮后,我想使用Javascript 如何将按钮传递到Jquery函数中?,javascript,jquery,dialog,arguments,confirm,Javascript,Jquery,Dialog,Arguments,Confirm,我正在使用名为jQquery.confirm的第三方jQuery库。它在jQuery中提供对话框。单击特定类的按钮后,我想使用confirm()函数来显示确认: $(".btn-danger").click(function(event) { //Prevent the button from being clicked. event.preventDefault(); $.confirm({ text: "Are you sure you want t
confirm()
函数来显示确认:
$(".btn-danger").click(function(event) {
//Prevent the button from being clicked.
event.preventDefault();
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
//Code in here for button to be pressed
}
});
});
我遇到的问题是confirm:function()
。我想简单地模拟点击这里的按钮。我已经试过了,但它似乎无法识别我需要单击的按钮:
$(this).trigger("click");
我猜我需要将其作为参数传递到某个地方?在
确认处理程序函数中,此
的范围将不会引用已单击的按钮。要解决此问题,需要在confirm
处理程序外部的变量中存储对单击按钮的引用
但是请注意,您正在创建的逻辑将以循环结束;单击按钮,显示confirm
,然后以编程方式再次单击按钮,这将再次显示confirm
,以此类推。我建议您调用一个函数来执行confirm
操作中需要的操作,如下所示:
试试这个:
$(".btn-danger").click(function(e) {
e.preventDefault();
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
actionWasConfirmed();
}
});
});
var actionWasConfirmed = function() {
console.log('do something here...');
};
按钮的HTML代码:
<button class="btn-danger" >Delete</button>
每个事件回调函数都接收对触发它的事件的引用。您已经设置好使用事件
参数获取该引用。通过该对象,您可以引用触发事件的对象(在您的案例中,该对象将是按钮)。所以,你可以这样做:
$(".btn-danger").click(function(event) {
//Prevent the button from being clicked.
event.preventDefault();
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
event.target.trigger("click")"
}
});
});
但是,正如已经指出的,点击按钮将导致确认后再次点击按钮
由于您只想在确认后删除某些内容,因此更好的方法是只删除条目。换句话说,把你的逻辑分开。单击按钮应触发确认,确认应删除条目,而不是再次单击按钮
$(".btn-danger").click(function(event) {
//Prevent the button from being clicked.
event.preventDefault();
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
// Delete the comment here, don't click more buttons.
}
});
});
使用$(this)
时,必须确保在正确的对象中使用它。您不能在$(确认)内使用$(此)
,并期望引用您的$(“.btn danger”)
。相反,它将引用$(确认)
,而不是您的目标按钮
看看下面的工作示例,询问是否有不清楚的地方
$(".btn-danger").click(function(e) {
e.preventDefault();
// Here $(this) references the object you need clicked
var currentButton = $(this);
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
// If you used $(this) here you referenced to your $(confirm) object
// Instead of a false $(this), use the button that actually triggered this code.
currentButton.trigger('click');
}
});
});
我不确定这是不是你想做的,但是请考虑上面的代码是无限循环的,因为当点击被触发时,整个代码将被再次调用。
因此,如果您想按另一个按钮,请使用该按钮的完整选择器,或者为他分配一个唯一的ID并选择它,如下所示:
目标按钮的HTML代码:
这是一个使用的示例,它替代了Javascript内置的警报弹出窗口。如果您以前没有签出SweetAlert,我强烈建议您签出
下面是一个工作示例(您可能希望全屏显示全部效果)。不幸的是,您将无法看到实际的提交工作,但是一旦您添加了实际操作,代码就应该工作了
$(“form.confirm”)。查找(“[type=submit]”)。单击(函数(e){
var$这个;
e、 预防默认值();
$this=$(this);
返回甜蜜警报({
标题:“你确定吗?”,
键入:“警告”,
showCancelButton:true,
confirmButtonColor:#DD6B55“,
confirmButtonText:“确认删除”,
closeOnConfirm:false
},函数(){
返回$this.closest(“表单”).submit();
});
});代码>
提交
如前所述-我正在使用第三方库进行确认。
$(".btn-danger").click(function(e) {
e.preventDefault();
// Here $(this) references the object you need clicked
var currentButton = $(this);
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
// If you used $(this) here you referenced to your $(confirm) object
// Instead of a false $(this), use the button that actually triggered this code.
currentButton.trigger('click');
}
});
});
<input type="button" value="Button To Be Clicked after Confirm" name="myButton" id="uniqueID_onWholePage" />
$(".btn-danger").click(function(e) {
e.preventDefault();
$.confirm({
text: "Are you sure you want to delete that comment?",
confirm: function() {
$('#uniqueID_onWholePage').trigger('click');
}
});
});