2012-02-15 139 views
1

我遇到了多個jQuery UI對話框的問題。我想要的是我可以有多個對話框,並且點擊類「.close-modal」的按鈕只會關閉該按鈕所在的對話框。現在,首先需要一點背景知識:在網站的「主」父項中有一個簡單的函數,它將通過點擊類「.modal」類的鏈接來打開模態對話框;一次關閉jquery-ui對話框

在父

function modal(href, title) { 
    var $dialog = $('<div></div>'); 
    $dialog.html('<iframe class="modal" name="' + title + '" style="border: 0px;" src="' + href + '" width="100%" height="100%"></iframe>'); 
    $dialog.dialog({ 
     autoOpen: false, 
     modal: true, 
     height: 650, 
     width: 950, 
     title: title 
    }); 


    $dialog.dialog('open'); 

    $(document).bind('close-dialog', function() { 
     $dialog.dialog('close'); 
    }); 
} 

$('a.modal').click(function(event) { 
    event.preventDefault(); 
    modal($(this).attr('href'), $(this).attr('title')); 
} 

此代碼的工作,我希望它的方式。從對話框打開一個對話框,我調用父窗口的模態函數使用正確的參數,從而使多個對話可以在父顯示:

在對話框

(function($) { 
    $(document).ready(function() { 
     $('a.modal').click(function(event) { 
      event.preventDefault(); 
      parent.modal($(this).attr('href'), $(this).attr('title')); 
     } 

     /** Trigger the close-dialog event on the parent to close the current dialog. */ 
     $('.close-dialog').click(function() { 
      parent.jQuery(parent.document).trigger('close-dialog'); 
     }); 
    }); 
})(jQuery); 

所以,本質;我在父窗口(「close-dialog」)上定義了一個事件,可以通過iframe中的代碼調用$ dialog.dialog('close');這工作出色;我可以創建多個對話框,即使在對話框中也是如此,但問題是,一旦我點擊了button.close-dialog,它會關閉我的對話框的全部

是否有任何方法可以確定從哪個對話框中調用該事件?或者將事件綁定到當前對話框?

回答

1

你可以使用jquery模式的按鈕選項。

<script> 
$(function() { 
    $(".myModals").dialog({ 
     modal: true, 
     buttons: { 
      Close: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
}); 
</script> 

這應該做到這一點對所有的情態動詞一氣呵成,並且按鈕它創建僅適用於自己。希望有所幫助!

+0

它有幫助,但不完全。我在模式窗口中有按鈕,它應該關閉它,但它們沒有。我重新設計了應用程序,以便只使用一個模式窗口,而這似乎工作。儘管我會接受你的回答,因爲它是唯一的一個:) – 2012-02-27 14:03:08

+0

真棒,謝謝!現在我可以評論:) – Heroes182 2012-02-27 15:14:41