2011-10-24 176 views
0

我設置了幾個縮略圖,每次用戶單擊縮略圖時,我都會在中間顯示大圖片,並且設置動畫/隱藏縮略圖,如果從頂部刪除並將其插入到縮略圖集的結尾。但是在全面完成之後 - 再次點擊第一張圖片 - 腳本不再執行。劇本:jquery腳本拒絕執行一輪後再次執行

$(".loadMainPhoto").click(function (event) { 
    event.preventDefault();  
    var $this=$(this).children(":first"); 
    var html="<div class='filmStripOuter'id='div_"+$this.attr('id')+"'>"+$("#div_"+$this.attr('id')).html()+"</div>";  
    var parent=$("#div_"+$this.attr('id')).parent(); 

    $("#div_"+$this.attr('id')).animate({ 
     opacity: 0.25, 
     height: 'toggle' 
    }, 500, function() { 
     $("#div_"+$this.attr('id')).remove(); 
     parent.append(html); 
    }); 

我不確定我的解釋是否足夠,我會根據需要提供其他信息。任何幫助讚賞。



感謝Stefan和Mark現在已經修復了,問題是我嘗試匹配頁面加載後添加的元素,然後綁定不起作用。解決方法是使用相同的元素(不是新的)或使用live()http://api.jquery.com/live/你可以看到它是如何在我的遊樂場上運行的;)http://papiez.me

+0

可以請你發佈相關的html結構嗎? – jbabey

+0

也檢查控制檯,如果有錯誤的javascript停止運行。可能是第一次運行不會產生任何錯誤,但第二次運行的情況 – Juan

+0

感謝Stefan並馬克它現在是固定的,問題是我嘗試匹配頁面加載後添加的元素,然後綁定不起作用。解決方案是使用相同的元素(不是新的)或使用[live()](http://api.jquery.com/live/)你可以看到它是如何在我的操場上運行的;)[papiez.me](http:// papiez.me) – Bartek

回答

0

看起來你似乎在修改DOM,應該看看http://api.jquery.com/live/

+0

就是這樣,非常感謝...正如jquery描述所說:「這個新元素也匹配選擇器,但由於它是在調用.bind()之後添加的,所以點擊它將什麼都不做。 「 – Bartek

0

您錯過了一個尾隨});是問題的一部分還是這是一個錯誤嗎?

你爲什麼要插入一個新的div?

"<div class='filmStripOuter'id ...

好像你應該捕捉原始(第一個),然後重新插入它,而不是創建一個全新的ID一些新的包裝(除了前面老ID「div_」。

+0

當我複製它時,追蹤錯誤是錯誤的。如果我移動它而不是創建新的工作,那麼您是對的。就像Stefan指出的那樣,這是同樣的問題,綁定不適用於加載頁面後創建的元素。無論如何,這兩個解決方案的工作,非常感謝;) – Bartek