我使用Fancybox和幻燈片放映。我有一個幻燈片,「動態」加載數據庫中的項目。帶有Fancybox的jQuery動態創建的元素。只適用於第二次點擊,從不第一次
<div id="#slideshow">
<div id="#slide-description">
<a href="http://localhost/test.php">Fancybox here</a>
</div>
</div>
注意:#slideshow
div內的所有內容都是由jQuery動態生成的。
我的JavaScript看起來像這樣:
$("#slide-description").on('click', 'a', function() {
console.log('triggerd click!');
$(this).fancybox({
type: "ajax",
ajax: {
dataFilter: function(data) {
return $(data).find("#portfolio-info");
}
},
onComplete: function(){
console.log('done.');
}
});
return false;
});
我的問題是,它只有當我點擊兩次工程 - <a href="http://localhost/test.php">Fancybox here</a>
。
當我第一次點擊鏈接時,triggered click!
被記錄在控制檯中,但沒有GET
請求。然後當我第二次點擊它時,它就起作用了!
控制檯:
triggerd click! /* 1st click */
GET http://localhost:8888/raydar/portfolio/frucor-1/ 200 OK /* 2nd click */
triggerd click! /* 2nd click */
done. /* 2nd click */
任何答覆將不勝感激,因爲我已經花了幾個小時這一點。
如果是動態生成的內部#slideshow的一切,這意味着你在摧毀和重建#滑描述也是。所以你不想把你的聽衆綁定到那個。爲什麼不把監聽器綁定到#slideshow本身? – 2012-07-09 04:16:59
感謝Greg的回覆。 ('click','a',function(){...'和'$(「#slideshow a」)。on('click',function() {...'並且兩者都不起作用,當我這樣做的時候,問題是''標籤中的'href'被跟蹤/執行,並且它會進入鏈接而不是加載到Fancybox中。 – wenbert 2012-07-09 04:27:46
如果使用fancybox v1.3.4和動態添加的元素,您也可以查看http://stackoverflow.com/a/9084293/1055987 – JFK 2012-07-09 05:45:15