我们有一个具有以下结构的页面:
<script type="text/javascript" src="/js/lots.of.javascript.js"></script>
<jsp:include page="html.jsp"/>
JavaScript有很多$(function(){...}
块。在一个区块中,我们尝试了$("#mylink").click(...)
,但这不起作用。但是相应的.live('click'
DID工作。为什么是这样?
更新:更具体地说,我假设在链接添加到DOM之后,click和live语句正在运行,因为链接包含在html.jsp文件中并且语句在$(function(){...}
阻止......所以考虑到这一点,我不确定为什么点击不起作用......
答案 0 :(得分:2)
看不到代码,显而易见的原因是在定义事件后创建了元素。这是使用.live()
的主要原因。
答案 1 :(得分:0)
没有看到更多的代码,没有办法确定,但我知道发生这种情况的唯一方法是,如果您的控件(在这种情况下 - 具有id =“mylink”的项目)在页面之后创建加载。
答案 2 :(得分:0)
我猜想在加载页面后该元素已添加到DOM中。 .live
方法确保后面添加的元素将获得正确的事件处理程序。
答案 3 :(得分:0)
可能是ID #mylink
的元素是在以后创建的,而不是在DOM准备就绪时。