jquery防止默认问题

时间:2014-09-24 16:01:42

标签: javascript php jquery

如何让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;?>

它运作正常,但我想象这是一种黑客而不是正确的做事方式。 想法?

3 个答案:

答案 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函数,然后对此进行阻止默认。

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);
        }
    });
}

答案 2 :(得分:0)

如果您想要阻止该事件,您可以在事件本身中执行此操作

<script>
 $( "a" ).click(function( event ) {  
  event.preventDefault();
 });
</script>