我想知道如何构建依赖于用户点击事件的 preventDefault/stopPropagation,例如:
<html>
<a data-handler="add_to_cart" data-item_id="5">Click</a>
</html>
点击当前元素调用后端(通过 ajax)将项目 5 添加到用户购物车。但是如果我想先注入(inject)一个对话框怎么办(仅限 javascript)
var template = '' +
'<div class="dialog">' +
'<p>Really add this item?</p>' +
'<button>Yes</button>' +
'<button>No</button>' +
'</div>'
$(a).click(function(){
# open the dialog template
# if the correct button is clicked continue the default event
});
我不想使用confirm
或prompt
,我主要是想用我自己的 html 对话框来实现它们的功能。
最佳答案
您可以阻止传播并从对话框中重新调用 click()
方法,并请求传播。
var template = '' +
'<div class="dialog">' +
'<p>Really add this item?</p>' +
'<button class=correctbutton>Yes</button>' +
'<button>No</button>' +
'</div>'
$(a).click(function(){
if(window.correctButtonClicked){
return true;//continue propagation
}
window.clickedA=a // store current clicked object
openDialog()
return false; //stop propagation
});
function openDialog(){
//Make a dialog from the template
$('.correctbutton').click(function(){
window.correctButtonClicked=true;
$(window.clickedA).click();
});
}
关于javascript - 暂停点击事件直到用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279970/