Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将按钮传递到Jquery函数中?_Javascript_Jquery_Dialog_Arguments_Confirm - Fatal编程技术网

Javascript 如何将按钮传递到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

我正在使用名为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 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');
        }
    });
});