从Code Behind打开jQuery UI对话框
我是jQuery和JavaScript的新手,我遇到了一个问题。
我在Gridview中从ButtonField打开jQuery UI对话框时遇到一些问题:
起初我尝试给上面的一个类并将其命名为sliderPopupOpener,并在单击时打开jQuery Popup,如下所示:
$(".sliderPopupOpener").click(function () { $("#sliderPopup").dialog("open"); });
然而,由于回发,这不起作用,除此之外,它也不适用于我的方法。 因为我想在显示jQuery UI对话框之前从数据库中获取一些数据。 所以我认为最好的方法是从Code Behind调用Dialog函数。
我怎样才能做到这一点?
我试过这种方法,但它不起作用,我不确定我做错了什么。
if (e.CommandName == "modifyDeadline") { string sliderPopupFunction = @" $(function () { jQuery(function () { $(""#sliderPopup"").dialog(""open""); } }); "; ClientScript.RegisterStartupScript(typeof(Page), "key", sliderPopupFunction); }
以上可能吗? 如果是这样,我做错了什么?
编辑:
我注意到每个人都在解决这个问题,而不是通过从Code Behind调用jQuery函数来告诉我这是否可行。 虽然我很欣赏其他解决方案,但如果我能通过背后的代码尽可能少地工作,我将不胜感激,因为我已经准备好了这一切。
不应直接绑定click
事件处理程序,而应使用live
(自jquery 1.7以后弃用)或on
来尝试委派事件。
那样,你应该改变这个:
$(".sliderPopupOpener").click(function () { $("#sliderPopup").dialog("open"); });
进入这样的事情:
$(body).on("click", ".sliderPopupOpener", function(){ $("#sliderPopup").dialog("open"); });
替代
如果代码隐藏方法更适合您,您应该尝试直接在脚本中调用该方法,即更改此:
string sliderPopupFunction = @" ";
简单地说:
string sliderPopupFunction = @" ";
此外,如果您的sliderPopup
是服务器端控件,则应将#sliderPopup
替换为ASP .NET生成的客户端ID(使用sliderPopup.ClientID
)。
另一件需要考虑的事情是如果您的sliderPopup
位于更新面板内,您应该首先尝试重新初始化Jquery UI对话框,如下所示:
$("#sliderPopup").dialog().dialog("open");
只需用
我认为在这种情况下你最好使用普通的"); $.each(data,function(){ $table.append("
") }); $table.dialog(); } }); }); });"+this.MyProperty+"