如何使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;?>
它工作正常,但我认为这是一种黑客行为,而不是正确的做事方式。想法?
传入event
对象并在该对象上调用preventDefault()
:
<a href='' onclick="javascript:OpenModal(<?=$val->Prodid;?>, event);"><?=$val->ProdDesc;?>
function OpenModal(id, event) {
event.preventDefault();
您可以使用数据属性将您的id解析到JQuery,并将事件绑定到单击函数,然后对此执行preventDefault。
HTML
<a href='#' id='myLink' data-value='<?php echo $myVal; ?>'>Click Me!</a>
JQuery
$('#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);
}
});
}
如果你想阻止事件,如果你声明它太,你可以在事件本身中执行
<script>
$( "a" ).click(function( event ) {
event.preventDefault();
});
</script>