2012-11-29 24 views
3

我遇到了一個小問題。這裏是一個示例即時消息。當通過innerhtml分配ID時,jquery ui對話框將不會打開

htmlValue += '<a href="#" id="shareOpen" style="margin: 0 2px 0 2px; float: left;" 
title="Share File" class="version ui-icon ui-icon-heart"></a>'; 
$(modalDivObj).html(htmlValue); 

我正在一個頁面上用一堆其他函數寫一個循環。並且一切都寫得很好並出現。但是,當我點擊#shareOpen時,對話框將不會打開。我試圖編碼相同的HTML,它工作正常。問題是,當我通過.html()執行它不會寫入ID?我不知道。

這裏是一些在頁面的HTML和jQuery。

$("#shareFile").dialog({ 
     autoOpen: false, 
     modal: "true", 
     show: "blind", 
     hide: "explode", 
     buttons: { 
      "Done": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#shareOpen").click(function() { 
     $("#shareFile").dialog("open"); 
     return false; 
    }); 
<div id="shareFile" runat ="server"> 



</div> 
+0

你什麼時候調用各種Javascript代碼?在嘗試綁定click元素之前,您必須確保已創建'shareOpen'元素。 – ChrisPatrick

+0

我正在通過ID獲取shareFile,並通過javascript添加html。但是當我把這條線顯示圖標,但ID是搞砸了。 –

+0

什麼是modalDivObj? – ChrisPatrick

回答

0

從你說的我認爲最可能的問題是,點擊事件未被正確綁定。

嘗試使用以下,而不是目前的來電點擊:

$("#files-icons").on("click", "#shareOpen", function() { 
    $("#shareFile").dialog("open"); 
    return false; 
}); 

這將事件處理程序綁定到ID爲「shareOpen」是的#文件,圖標兒童的任何元素,無論何時他們被添加到頁面。

我認爲問題在於,您在頁面中尚未存在的元素上綁定點擊處理程序。

+0

這真棒。非常感謝!!! –

+0

實際上,如果你只創建一次「#shareOpen」,那麼使用你最初的點擊綁定可能會更好一些,但是在你設置modalDivObj的HTML內容之後,它會被調用。 – ChrisPatrick