我想将'a.delete'触发元素传递给我的bootbox回调,有没有办法做到这一点?
var confirm = false;
$('body').on('click', 'a.delete', function(e) {
if( confirm == false){ e.preventDefault(); }
bootbox.confirm("Confirm?", function(result) {
if(result == true){
confirm = true;
$(this).trigger('click');
}
});
});
修改 好吧,Taplar我做了你说的,但是没有触发动作,即使“触发点击”正在工作......
var confirm = false;
$('body').on('click', 'a.delete', function(e) {
var element = $(this);
if( confirm == false){
e.preventDefault();
bootbox.confirm("Confirm?", function(result) {
if(result == true){
confirm = true;
console.log(confirm);
element.trigger('click');
}
});
} else {
console.log('triggered again');
}
});
退出:点击确认按钮后我得到的内容
true
triggered again
我的解决方案
var confirm = false;
$('body').on('click', 'a.delete', function(e) {
var element = $(this);
if( confirm == false){
e.preventDefault();
bootbox.confirm("Confirm?", function(result) {
if(result == true){
confirm = true;
$(element)[0].click();
}
});
} else {confirm = false;}
});
答案 0 :(得分:0)
在你打电话给bootbox.confirm之前,请存储"这个"在可变的。
var clickedElement = this;
然后在bootbox.conf内部你可以引用" clickedElement"。
答案 1 :(得分:0)
虽然您可能有"工作",但您真的不想使用超链接进行删除操作。通过这样做,您使用GET请求来触发服务器端的更改(以及那里的破坏性更改),这应该是a bit of a no-no:
特别是,已经建立了GET和GET的惯例 HEAD方法不应该具有采取行动的意义 除了检索。应该考虑这些方法"安全"。 这允许用户代理表示其他方法,例如POST,PUT 和DELETE,以一种特殊的方式,使用户了解 事实上,正在要求采取可能不安全的行动。
更好的解决方案是将实际按钮的各个表单替换为超链接,如下所示:
<form method="post" action="your/deleteaction" class="delete-item">
<input name="ID" value="1" />
<button type="submit" class="btn btn-danger">Delete</button>
</form>
然后你可以做类似的事情:
$(document).on('submit', 'form.delete-item', function(e) {
bootbox.confirm("Really delete this item?", function(result) {
if(result !== true){
e.preventDefault();
}
});
});
通过这种方式,您可以遵循最佳实践,并且使用bootbox confirm作为转义子句,而不必重新触发链接。