我希望我的selectable可用作自动后备控件,当选择某些内容时,脚本会点击一个按钮并回发可选择的值。但它与我的ASP.NET Ajax和UpdatePanels并不相称。有时会发生完整的回发,而不是部分回发。
我的调试结论是,jQuery在stop函数运行时做了一些事情。如果我添加一个警告来停止停止功能,部分回发工作正常。
要添加更多混淆,这可以在IE9
和Chrome
中使用,但不能在IE7
或IE8
中使用。所以它也可能是浏览器特定的。
jQuery版本是:v1.6.2
<script language="javascript">
$('.selectable').live("mouseover", function () {
if (!$(this).data("selectable-init")) {
$(this).data("selectable-init", true);
$(this).selectable({
filter: '.item',
stop: function () {
$("#<% =btnPostback.ClientID %>").click();
}
});
}
});
</script>
<div class="selectable">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
</div>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Literal ID="litIsPostback" runat="server"></asp:Literal>
<asp:Button ID="btnPostback" runat="server" OnClick="btnPostback_OnClick" />
</ContentTemplate>
</asp:UpdatePanel>
protected void btnPostback_OnClick(object sender, EventArgs e)
{
litIsPostback.Text = ScriptManager.GetCurrent(this).IsInAsyncPostBack.ToString();
}
答案 0 :(得分:0)
这是我最接近的解决方案。
$('.selectable').selectable({
filter: '.item',
stop: function (event, ui) {
$('.ui-selectable-helper').remove();
setTimeout(function () {
$("#<% =btnPostback.ClientID %>").click();
}, 1);
}
});
通过在回发之前删除帮助器(套索),我可以从上到下拖动,但我不能以其他方式执行。在jQuery中,在停止事件之后删除帮助程序。
我不确定为什么setTimeout有效,但它解决了完整回发的问题。