2010-04-16 40 views
1

我有幾個演示視頻,我一直在做的教程,我用一個鏈接來打開一個對話框,並把演示視頻在框。jQuery對話框關閉後 - 我正在使用對話框銷燬

當用戶選擇查看完整音符時,我使用相同的div在頁面上顯示其他音符。

我用它來展示筆記的代碼是

 
    jQuery('span.Notes').live('click', function(){ 
var note=jQuery(this).data('note'); 

    jQuery('div#showNote').text(note); 
     jQuery('div#showNote').append('
'); jQuery('div#showNote').dialog({ modal: true, close: function(){ jQuery('div#showNote').dialog('destroy').empty(); } }); });

我使用的演示視頻的代碼非常相似。

 
jQuery('a.demoVid').click(function(){ 
     var videoUrl=jQuery(this).attr('href'); 
     jQuery('div#showNote').dialog({ 
     modal: true, 
    height: 400, 
    width: 480, 
    close: function(){ 
    jQuery('div#showNote').dialog('destroy').empty(); 
    } 
    }); 
    swfobject.embedSWF(videoUrl,'showNote','480','390','8.0.0'); 
return false; 
}); 

我可以點擊儘可能多的筆記,然後打開對話框並顯示筆記。 但是,當我點擊demoVid時,會打開對話框,但隨後關閉對話框會殺死頁面上的任何其他'showNote'對話框,因此我無法打開任何其他註釋或演示視頻。

回答

2

我的第二個猜測是調用swfobject.embedSWF是在一些DIV#showNote踐踏混淆jQuery的方式。我會嘗試將視頻放在對話框中的div上:

jQuery('div#showNote').append('<div id="showVideo"></div>').dialog({ ... }); 
swfobject.embedSWF(videoUrl,'showVideo','480','390','8.0.0'); 
+0

謝謝湯姆,你完全正確,swfobject正在踐踏一些東西。謝謝。 – pedalpete 2010-04-16 16:50:21

2

您對話的目標是div#showNote,並且元素ID在文檔中必須是唯一的。所以它會爲每個對話實例的新div,像下面這樣(未經測試),你應該改變它:

jQuery($('<div class="note">')).dialog({ ... 
    close: function() { 
    $(this).dialog('destroy').empty(); 
    } 
}); 
+0

我不確定我是否完全理解,或者我們可能會誤解對方。在頁面上只有一個div#showNote。當我放置demoVid的結果時,我將該音符放在同一個div中。無論如何,這兩者永遠不能同時打開,所以我不是在頁面中添加另一個div,而是使用已經存在的div。 – pedalpete 2010-04-16 04:53:02

+0

好吧,是的,我誤解了你的意思是「殺死任何其他showNote對話框」,你的意思是它阻止了他們從這一點開放,而不是關閉開放的。 – Tom 2010-04-16 05:15:37