event.preventDefault()无效(jQuery live)

时间:2012-07-23 14:32:50

标签: javascript jquery javascript-events

编辑:

目标是在点击链接时不要将屏幕移动到页面顶部。我只是想隐藏简短描述并显示完整的描述。

jQuery("#more_info a").live('click', function(event)
{
    event.preventDefault();
    jQuery('#food_desc').hide();
    jQuery('#food_desc_full').show();
});

上述代码的工作原理除了停止发生默认事件(转到页面顶部)之外。是因为live()事件吗?

编辑:

我甚至试过这个:

if (data.body_summary)
{
    jQuery("#food_desc").append('<p id="more_info"><a href="#">MORE &raquo;</a></p>');
    jQuery("#more_info a").click(function(event)
    {
        event.preventDefault();
        jQuery('#food_desc').hide();
        jQuery('#food_desc_full').show();
        return false;
    });

}

仍然是页面顶部...

我也试过这个:

jQuery("body").delegate("#more_info a", "click", function(event) 
{
    event.stopPropagation();
    event.preventDefault();
    jQuery('#food_desc').hide();
    jQuery('#food_desc_full').show();
    return false;
});

它显示/隐藏长/短描述,但不会阻止页面返回顶部。

4 个答案:

答案 0 :(得分:0)

来自docs

  

在事件处理程序中调用event.stopPropagation()无效   停止文件中较低的事件处理程序;事件有   已经传播到文件。

如果您还没有使用1.7 +,则应使用.on().delegate()

答案 1 :(得分:0)

这不是因为#中的href吗?

答案 2 :(得分:0)

我需要在标记的onclick事件中返回false。看看这个问题event.preventDefault() vs. return false

答案 3 :(得分:0)

您需要在委托中return false;生效e.stopPropagation();无用的