2013-02-08 31 views
6

Birden çok seçim kutusu görüntülemek için jquery mobile ve bir iletişim kutusu kullanıyorum. İçeriklerden bazıları, seçimlere bağlı olarak Ajax ile dinamik olarak oluşturulur. Diyalog kapalıyken (normal x düğmesiyle) Ajax çağrısını yapmak istiyorum. Şu anda aşağıdaki gibi sayfa postu üzerinde kod çalıştırarak aramayı yapıyorumİletişim jquery mobile iletişim kutusu

<a href="#queryPage" data-rel="dialog" data-transition="slidedown" >Filter Results</a> 
    <div data-role="page" id="queryPage" data-theme="a"> 
    <div data-role="header" data-theme="a"> 
    <h1>Select Filters</h1> 
    </div> 
    <div data-role="content"> 
    <form action="" method="get" id="filterForm"> 
    <fieldset id ="filterFields"></fieldset> 
    </form> 
    </div> 
    </div> 

: şöyle html ana parçaları bakmak $('#queryPage').live('pagehide', function(event) { //code for ajax call });

Ancak, arama yapmak istediğinizde Bazı seçim listeleri büyük olduğundan ve iletişim kutusu kapatılmasa bile queryPage'i gizleyen yeni bir sayfa oluşturduğundan iletişim kutusu kapanır.

$('#queryPage').bind('dialogclose', function(event) { 
     alert('closed'); 
    }); 

ve ayrıca

$('#queryPage').dialog({close:function(event, ui){ 
     alert("closed"); 
    }}); 

Bunlar sayfa yüklemesinde denilen bir fonksiyonu koyduk ama diyalog kapatıldığında uyarı gösterilmez çalıştı: Ben çalıştılar. Herhangi bir yardım takdir edilecektir.

cevap

12

Basit bir iletişim kutusu olarak görüntülenen sayfalar olduklarından, iletişim kutuları için belirli olaylar yoktur. pagehide etkinliğini deneyin.

$("#MyDialog").bind("pagehide",function(){ 
    alert("Dialog closed"); 
}); 

Ayrıca, örnek kod ilk satırı yapılmamalıdır bir <div data-role="page"> dışında bir bağlantı vardır.

+0

Üzgünüm, sayfanın kalanını html kodunu o ilk satır için bıraktım çünkü soru için gerekli olduğunu düşünmedim. Dediğim gibi, şu anda 'pagehide' kullanıyorum ama daha iyi ya da bunu yapmanın başka yollarını arıyorum. – user1868237

1

Pagehide gibi yetki verilebilir:

$(document).delegate("#MyDialog", "pagehide", function() { 
    alert("Dialog closed"); 
}); 

ve ayrıca arama sayfasının ekran elemanlarına erişebilecek.

0

Andleer, jquery'yi kullanarak iletişim kutusunu kapatmak için uygun olayı paylaştı. Ancak, bu şekilde de kodlayabiliriz.

$(document).on("pagehide","#Dialog",function(){ 
     console.log('Dialog has closed.'); 
    });