我使用这样的函数和参数创建自定义删除
function boxAlert(params){
$('body').append(
'<div class="box">' +
'<div>' +params.message+ '</div>' +
'<button onclick="' +params.action()+ '"> YES </button>' +
'</div>'
);
}
然后我像这样使用它
<button onclick="_delete()"> Delete Data </button>
<script>
function _delete(){
boxAlert({
message: 'Lorem ipsum dolor?',
action: function(){ // call this after button is clicked
alert();
}
});
}
</script>
这是可行的,但是,单击“确定”按钮之前调用了警报,我想单击“确定”按钮之后调用了警报,如何解决?非常感谢
答案 0 :(得分:4)
我会这样重写它:
function boxAlert(params) {
$('body').append(
$('<div class="box">').append(
$('<div>').text(params.message),
$('<button>YES</button>').click(params.action)
)
);
}
function _delete() {
boxAlert({
message: 'Lorem ipsum dolor?',
action: function () { // call this after button is clicked
alert();
}
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button onclick="_delete()"> Delete Data </button>
使用.click
函数来指定按钮元素的处理程序。另外,在使用该消息时,请使用.text
函数为消息指定文本(可以正确地将其转义。)
答案 1 :(得分:1)
问题是您使用了params.actions()。注意括号,您正在调用该函数。
解决方案:
<button onclick="setTimeout(' +params.action.toString()+ ',0)">
在此解决方案中需要setTimeout才能执行该功能。
希望获得帮助!
答案 2 :(得分:0)
<button onclick="' +params.action()+ '"> YES </button>
将调用该操作并将一个字符串附加到点击处理程序。
function boxAlert(params){
let div = $('<div class="box">' +
'<div>' +params.message+ '</div>' +
'</div>').append($('<button> YES </button>').click(params.action));
$('body').append(div);
}