我一直在遇到著名的 jQuery 在回发后无法运行的问题。所以我做了一些研究,最好的新方法是 jQuery 的 live() 函数。但事实证明,这个从 1.7 版开始就被弃用了,取而代之的是 on() 函数。所以我将我的 jQuery 插件转换为使用 on() 函数,但它在回发后仍然不起作用。
插件:
$(document).ready(function () {
$('.drag').on("mouseover", function () {
AfterPostBack();
$(this).draggable()
.click( function () {
$(this).draggable({ disabled: false });
}).dblclick( function () {
$(this).draggable({ disabled: true });
});
});
$('.text_label').on("blur",function () {
$(this).removeClass('focus');
});
});
var AfterPostBack = function () {
$('.drag').draggable("option", "containment", 'parent');
$('.drag').draggable("option", "snap", 'parent');
$('.drag').draggable("option", "cursor", 'move');
};
网页:
<script type="text/javascript" src="Scripts/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="Scripts/jquery-ui-1.8.23.custom.min.js"></script>
<script type="text/javascript" src="Scripts/myplugin.js"></script>
<link href="Styles/myplugin.css" rel="stylesheet" type="text/css" />
<asp:UpdatePanel runat="server" ID="UP1" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:Button ID="btn_AddText" runat="server" Text="Add Text" OnClick="AddText" />
<asp:PlaceHolder ID="ph1" runat="server">
<div class="drag">
<asp:Label ID="lbl1" class="text_label" runat="server" Text="Click Me"/>
</div>
</asp:PlaceHolder>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn_AddText" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
希望对此有所帮助。谢谢。