2011-04-06 120 views
0

我發現了jQuery對話框的一些jQuery代碼,它工作的很好。我遇到的問題是當我點擊鏈接的圖像打開對話框時,它會打開它應該如果我關閉對話框,再次單擊鏈接的圖像它不會重新打開jQuery對話框。jQuery對話框打開(不止一次)?

這裏是jQuery代碼:

$(document).ready(function(){ 
     $('#gravatarprofilemoreinfoshow').click(function(){ 
      $('#gravatarprofilemoreinfo').dialog({ 
       modal:true, 
       resizable: false, 
       draggable: true, 
       width: '486px', 
       height: 'auto', 
       hide: 'size', 
       autoOpen: true, 
       buttons:{ "Close": function() { $(this).dialog("close"); } }, 
       close: function(ev, ui) { $(this).remove(); } 
      }); 
     }); 
    }); 

的HTML標記是:

<a href="#" id="gravatarprofilemoreinfoshow" rel="/somelink" > 
<img class="profileimgright profileimgframe" alt="Profile Image" src="/url/to/image" /> 
</a> 

我怎樣才能調整代碼?還有一種方法來改變代碼,所以它不依賴於唯一的ID?

原因我想問的是,我想在我的網站上使用上述jQuery的代碼來顯示不同的信息,但上面的代碼需要一個唯一的名稱(抱歉,不知道他們稱之爲jQuery中),並希望代碼可重用穿過我的網站。

回答

4

您應該刪除行

close: function(ev, ui) { $(this).remove(); } 

的問題是,它消除後關閉對話框和內容,所以你不能把它用在第二次點擊。看看jQuery Remove

此外,要重用使用此代碼,您可以做以下。聲明單擊時註冊對話框的方法。這種方法將要傳遞的圖像選擇和對話

function registerDialogOnImageClick($image, $dialog){ 
     $image.click(function(){ 
      $dialog.dialog({ 
       modal:true, 
       resizable: false, 
       draggable: true, 
       width: '486px', 
       height: 'auto', 
       hide: 'size', 
       autoOpen: true, 
       buttons:{ "Close": function() { $(this).dialog("close"); } }, 
      }); 
     }); 
    } 

這個代碼可以從任何地方被調用,通過圖像的選擇和對話

$(document).ready(function(){ 
    registerDialogOnImageClick($('#gravatarprofilemoreinfoshow'), $('#gravatarprofilemoreinfo'); 
}); 
+0

感謝@archil。完美地向我解釋和解決問題:)感謝PHPLOVER – PHPLOVER 2011-04-06 09:21:33