编辑:
目的是在单击链接时不要将屏幕移至页面顶部。我只希望它隐藏简短的描述并显示完整的描述。
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 »</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;
});
它执行长/短描述的显示/隐藏,但不会阻止页面从顶部开始。
最佳答案
从docs:
在事件处理程序中调用event.stopPropagation()
在以下情况下无效
停止附加在文档下方的事件处理程序;该事件有
已经传播到文档。
您应该改为使用.on()
,如果尚未使用1.7+,则应使用.delegate()
。