1

编辑:

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

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

4 回答 4

0

你我需要在标签的 onclick 事件中返回 false。查看这个 SO 问题event.preventDefault() 与 return false

于 2012-07-23T16:13:00.447 回答
0

这不是因为#href吗?

于 2012-07-23T14:48:19.223 回答
0

你需要return false;为生活做委托,你e.stopPropagation();没用

于 2014-02-21T18:36:54.353 回答
0

文档

调用event.stopPropagation()事件处理程序在停止附加在文档下方的事件处理程序方面是无效的;该事件已经传播到文档。

您应该.on()改用,或者.delegate()如果您还没有使用 1.7+。

于 2012-07-23T14:45:36.127 回答