2015-06-26 38 views
0

我給的代碼,該內部gridview1鏈接關閉一次jQuery的對話是不開放的第二次點擊

<script type="text/javascript"> 
    var dialogOptions = { 
     autoOpen: false, 
     appendTo: "#dialogContainer", 
     modal: true, 
     height: "auto", 
     width: "auto", 
     title: "Dialog Title", 
     closeOnEscape: true, 
     show: { effect: "fold", duration: 4000 }, 
     buttons: { 
      Cancel: function() { 
       $(this).remove(); 
      } 

     } 

    }; 
    $(".ui-widget-overlay").live("click", function() { 
     $("div:ui-dialog:visible").dialog("close"); 
    }); 
    $(function() { 
     $(".dialog-marker").on("click", function() { 

      var d = $(this).next("div").first().dialog(dialogOptions); 
      d.dialog("open"); 
      return false; 
     }); 

    }); 

</script> 

我的aspx頁面代碼是

<body> 
    <form id="form1" runat="server"> 
    <div style="width: 400px;"> 
    <asp:GridView ID="GridView1" OnRowDataBound="GridView1_RowDataBound" runat="server" AutoGenerateColumns="False" 
     DataKeyNames="BusNo" 
     DataSourceID="SqlDataSource1"> 
     <Columns> 
     <asp:BoundField DataField="RouteName" HeaderText="RouteName" SortExpression="RouteName" /> 
     <asp:TemplateField HeaderText="Info"> 
      <ItemTemplate> 
      <div id="divButton" runat="server" class="btn_styling dialog-marker" title="This could also have been a <button> element or maybe an <img> element...anything really">X</div> 
      <div id="popup" style="display: none;"> 
       <asp:GridView ID="GridView2" runat="server" 
       AutoGenerateColumns="False" 
       DataSourceID="SqlDataSource2"> 
       <Columns> 
        <asp:BoundField DataField="StopName" HeaderText="StopName" SortExpression="StopName" /> 

       </Columns> 
       </asp:GridView> 
       <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
       ConnectionString="<%$ ConnectionStrings:constr %>" 
       SelectCommand="SELECT StopName from BusStops WHERE (BusNo = @BusNo)"> 
       <SelectParameters> 
        <asp:Parameter Name="BusNo" /> 
       </SelectParameters> 
       </asp:SqlDataSource> 
      </div> 
      </ItemTemplate> 
     </asp:TemplateField> 
     </Columns> 
     <RowStyle BorderColor="Blue" BorderStyle="Solid" BorderWidth="1px" /> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:constr %>" 
     SelectCommand="SELECT BusNo,RouteName from BusRoutes"> 
    </asp:SqlDataSource> 
    </div> 
    <div id="dialogContainer"> 
    </div> 
</form> 
</body> 
and code behind code is 

public void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
    { 

    if (e.Row.RowType == DataControlRowType.DataRow) { 
     GridView gv2 = (GridView)e.Row.FindControl("GridView2"); 
     SqlDataSource sds = (SqlDataSource)e.Row.FindControl("SqlDataSource2"); 

     sds.SelectParameters["BusNo"].DefaultValue = GridView1.DataKeys[e.Row.RowIndex].Value.ToString(); 
     gv2.DataBind(); 
    } 
    } 

回答

0

試試這個可能後不工作工作,

$(document).off("click", ".dialog-marker").on("click", ".dialog-marker", function() { 
    var d = $(this).next("div").first().dialog(dialogOptions); 
    d.dialog("open"); 
    return false; 
}); 

.off()方法刪除使用.on()附加的事件處理程序。有關更多信息,請參閱該頁面上關於委派和直接綁定事件的討論。在不帶參數的情況下調用.off()將刪除附加到元素的所有處理程序。通過提供事件名稱,名稱空間,選擇器或處理函數名稱的組合,可以在元素上刪除特定事件處理程序。 如果給出多個過濾參數,則提供的所有參數必須與要移除的事件處理程序匹配。

你可以參考http://api.jquery.com/off/

0

請加$(".ui-widget-overlay").live("click", function() {document.ready。這樣

$(document).ready(function(){ 
     $(".ui-widget-overlay").live("click", function() { 
      $("div:ui-dialog:visible").dialog("close"); 
     }); 
     $(".dialog-marker").on("click", function() { 

      var d = $(this).next("div").first().dialog(dialogOptions); 
      d.dialog("open"); 
      return false; 
     }); 

    }); 

或者乾脆

一些事情做出funtion這樣和onClick事件

function showDialogBox(){ 
    var d = $(this).next("div").first().dialog(dialogOptions); 
     d.dialog("open"); 
     return false; 
} 


function closeDialogBox(){ 
    $(".ui-widget-overlay").live("click", function() { 
     $("div:ui-dialog:visible").dialog("close"); 
    }); 
} 
+0

還是添加一個函數調用的鏈接工作once.button後不工作不工作第二次點擊。 –