2010-10-26 60 views
1

我正在處理由AJAX加載的內容的對話框,但我無法刪除它。 一個必須是有一個多個,php支持的,可拖拽和可關閉的對話框。
(.center()函數存在)刪除加載的jQuery AJAX元素

$('a.event').click(function() { 
    var url = this.href; 
    var getrel = $(this).attr('rel'); 
    var getid = $(this).attr('id'); 
    var dialog = $('<div id="event_'+getid+'" class="izModal '+getrel+'"></div>').appendTo('body'); 
    dialog.load(url, {}, function (responseText, textStatus, XMLHttpRequest) { $('#event_'+getid+'').append("<a class='close' rel='"+getid+"'>x</a>"); }).center().draggable(); 
    return false; 
}); 

,並關閉它:

 $('a.close').click(function(event){ 
      var getevent = $(this).attr('rel'); 
      $('#event_'+getevent+'').hide(); 
     }); 

我試過(因爲你可能會看到)給每一個對話框的ID將其關閉。 也試過this.parenthide(),更改CSS和刪除()

有人可以發現錯誤嗎? 在此先感謝。

+0

你還可以在應用程序中添加實際插入的HTML塊嗎?如果您使用Firefox並且尚未使用該插件,請嘗試使用FireBug,否則您應該可以右鍵單擊並選擇「檢查元素」以獲取插入的HTML。 '你能爲我們插入兩個這些塊嗎?實際活塊「 – jcolebrand 2010-10-26 20:42:11

+0

Nick Craver給出了正確答案!我已經使用這些插件(在Chrome中),一切正常,但現在它已經修復了!只需等到我能接受答案。謝謝大家! – vonUbisch 2010-10-26 20:50:32

回答

4

你動態創建的鏈接你需要像一個.live()方法,像這樣:

$('a.close').live('click', function(event){ 
    var getevent = $(this).attr('rel'); 
    $('#event_'+getevent+'').hide(); 
}); 

當使用$('a.close').click()你發現存在的元素時,它的運行,新元素稍後創建的將不會有click處理程序,.live()通過依賴事件冒泡來解決此問題...所以它可以在稍後創建的元素上起作用。

+0

好的電話尼克,我沒有注意到那個消息 – jcolebrand 2010-10-26 20:45:30