关于javascript:在href之前执行click()函数中的方法

Performing methods in click() function before href

我有一个带有发送数据的href按钮,在此之前我想显示一个使用Bootbox.js的弹出窗口。

HTML:

1
  <button class="alert btn btn-primary" type="button">Submit</button>

JS:

1
2
3
4
5
$('alert').click(function(){
    bootbox.alert("Submitted!", function() {
        console.log("Alert Callback");
    });
});

这只是执行href操作,因此它不使用Bootbox.js显示弹出窗口。关闭此功能后,是否有方法执行函数并执行href?

参考:http://bootbox js.com


您可以使用return false;

1
2
3
4
5
6
$('.alert').click(function(e){ // missed the . for the class selector
    bootbox.alert("Submitted!", function() {
        location.href = this.parentNode.href;
    });
    return false;
});

另一个建议是在按钮本身上使用data-*属性,而不是将其包装在锚点中:

1
<button class="alert btn btn-primary" data-href="submit?result=something" type="button">Submit</button>

然后你可以使用这个:

1
2
3
4
5
$('.alert').click(function(e){ // missed the . for the class selector
    bootbox.alert("Submitted!", function() {
        location.href = this.dataset['href'];
    });
});

我认为您可以从HTML标记中删除超链接,只需保留按钮,然后执行如下操作:

1
2
3
4
5
6
$('.alert').click(function(){
    bootbox.alert("Submitted!", function() {
        console.log("Alert Callback");
        window.location.href = '/submit?result=something';
    });
});