如何让preventDefault在此上下文中正常运行?如果用户点击页面重新加载的超级链接,我希望阻止此默认操作。通常我会抓住点击事件或其他东西,但我直接从超链接调用函数。我不知道怎么做这种方式。非常感谢任何帮助。
<a href='' onclick="javascript:OpenModal(<?=$val->Prodid;?>);"><?=$val->ProdDesc;?>
<script>
function OpenModal(id) {
OpenModal.preventDefault(); //this does not work, but is here to show what I'm trying to do.
$.ajax({
url: "?url=Inventory/detail/"+id,
type: "POST",
success: function (data) {
$('#divDetail').html(data);
$('#divDetail').dialog({
modal: true,
width: 'auto'
});
}, error: function(jqXHR, textStatus, errorThrown){
alert('error'.textStatus.errorThrown);
}
});
}
</script>
如果我添加:
<a href='' onclick="javascript:OpenModal(<?=$val->Prodid;?>); return false;"><?=$val->ProdDesc;?>
它运作正常,但我想象这是一种黑客而不是正确的做事方式。 想法?
答案 0 :(得分:3)
传入event
对象,然后致电preventDefault()
:
<a href='' onclick="javascript:OpenModal(<?=$val->Prodid;?>, event);"><?=$val->ProdDesc;?>
function OpenModal(id, event) {
event.preventDefault();
答案 1 :(得分:1)
您可以使用数据attr将您的id解析为JQuery,并将事件绑定到click函数,然后对此进行阻止默认。
<a href='#' id='myLink' data-value='<?php echo $myVal; ?>'>Click Me!</a>
$('#myLink').click(function(e) {
e.preventDefault();
OpenModal( $(this).attr('data-value') );
});
function OpenModal(id) {
$.ajax({
url: "?url=Inventory/detail/"+id,
type: "POST",
success: function (data) {
$('#divDetail').html(data);
$('#divDetail').dialog({
modal: true,
width: 'auto'
});
}, error: function(jqXHR, textStatus, errorThrown){
alert('error'.textStatus.errorThrown);
}
});
}
答案 2 :(得分:0)
如果您想要阻止该事件,您可以在事件本身中执行此操作
<script>
$( "a" ).click(function( event ) {
event.preventDefault();
});
</script>