jquery阻止默认问题


jquery prevent default questions

如何使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>