2013-04-30 51 views
-1

http://portfolio.paulchelmis.com/design/design的.html()事件没有其他的.html内工作()插入

上一个组合的网站工作,到目前为止,我已经能够通过搜索等,以找出我的很多扭结的每一个,直到现在。无论如何,请点击右侧网格中的第一个或第二个链接。我的问题是关于jQuery的.html()方法 - 我已设置,以便当单击其中一个信息卡.thumbinfo时,#detailtext#detailimages内的html使用上述方法插入。

这工作正常 - 但#detailtextdiv里面我有两个Next和Prev按钮(.btnnext & .btnlast),用于改变“页”不首先关闭了。问题是,我似乎无法让这些按钮触发,除非他们被从他们的父div中取出。更重要的是,据我所知,这些按钮不会触发任何事件,不仅仅是.html命令。

我在#clicked<a>标记中包了一个以确保它不仅仅是z索引问题或其他东西。

无论如何...有没有解决这个问题,或者我应该找到解决方法?任何见解都非常感谢。

TL; DR:jQuery的.html事件或任何事件,在被以前注入的html(来自.html()方法)的元素INSIDE触发时似乎没有工作。

+3

你好,它有助于显示代码snippits。另外,你应该在jsfiddle中创建你的问题,而不是发布你的网站。 – smerny 2013-04-30 15:20:00

+0

处理动态创建/注入的元素时,始终使用'.on()'附加事件处理程序。 – billyonecan 2013-04-30 15:21:09

+0

这很可能是一个事件委托问题。看起来你正在替换下一个/ prev按钮,导致他们的事件发生在\ * poof \ *。我还没有导航到您的网站,但(可能不会),你应该在这里发布相关的代码/ HTML。 – 2013-04-30 15:22:10

回答

1

通过动态添加元素,您需要使用jQuery的.on()函数来绑定页面中已存在的元素。

事件处理程序只绑定到当前选定的元素;在代码调用.on()时,页面上必须存在 。 要确保元素存在并且可以选择,请在页面上的HTML标记中的 HTML标记中对元素执行文档就绪处理程序内的事件 绑定。如果新页面被注入页面, 选择元素并附加事件处理程序,当新的HTML被放置到页面中时,页面中的内容为 。

例如,绑定点击事件动态添加表行,绑定到文件(或理想的元素在DOM接近获得更好的性能):

$(document).on("click", "tr", function(event){ 
    alert($(this).text()); 
}); 
+0

这是我的预感,但它似乎没有解决问题。当添加这样一行时,该功能起作用,包括删除原始.click()绑定后,但仍不会改变动态添加按钮的行为。我认为这是因为我给了他们与原始触发器相同的ID,因此认为(希望)他们会有相同的行为而不必反弹。 – theoriginalpol 2013-04-30 15:47:17

+0

如果你在这里发布你的代码,或者更好的创建一个jsFiddle。网络例子我可能可以帮助你进一步。但有一个问题,你是否说你要复制ID? – j08691 2013-04-30 15:51:16

+0

创建新元素时,具有这些ID的以前元素会被删除,反之亦然。所以,技术上不是同时存在的。 W3C会仍然恨我吗? – theoriginalpol 2013-04-30 15:59:29