image按钮在第一次回发后不会触发jQuery / postback



我有一个asp.net web应用程序,有一个更新面板。在更新面板中,我有一个网格视图控件。在网格视图控件中,我有两个按钮,注意可见度:

<ItemTemplate>
  <asp:ImageButton class="DeleteLineItem" style="display:none;" ID="ibDelete2" runat="server" CommandName="DeleteRow" ImageUrl="images/d.gif" ToolTip="Delete Line Item?" />
  <asp:ImageButton class="TempDeleteLineItem" ID="ibTempDelete" OnClientClick="return false;" runat="server" ToolTip="Delete Line Item?" ImageUrl="images/d.gif" />
</ItemTemplate>

注意第一个显示设置为none,我这样做的原因是你会注意到第二个有一个onclientclick="return false;"。当我点击按钮id ibTempDelete它调用一些jquery从我的gridview中删除一行,然后它触发点击事件的ibDelete2按钮(一个隐藏)。jquery在这里:

$(".TempDeleteLineItem").click(function() { 
    $(this).closest("tr").fadeOut(3000, function() { 
        alert('hi');
        __doPostBack($(this).closest ('tr').find ('.DeleteLineItem').attr('name'), "");
        $(this).remove();
    }); 
});

我找到该行并将其淡出,通过调用DeleteLineItem事件并删除该行来进行回发。现在,当我第一次加载我的网页(假设有3条记录在网格视图)。当我的页面加载时,我可以很容易地点击ibTempDelete按钮,它调用jquery,淡出行,警报嗨,帖子回来并删除行…它基本上有效!很好,那我的问题是什么?

我的问题是在这篇文章回来后立即(现在我在我的网格视图中有2行),如果我尝试点击ibTempDelete按钮什么都没有发生,似乎它不再是可点击的?

所以我的问题是我对asp.net和回发是如何工作的缺乏理解。当我点击第一个回发按钮时,为什么这个按钮不再可点击?

当你调用__doPostBack时,页面无论如何都会刷新,为什么你调用$(this).remove()。也许你可以在调用__doPostBack之前调用它。当页面刚刚加载时,即使在回发之后,事件处理程序也应该按原样工作。请使用live.

$(".TempDeleteLineItem").live('click', function() { 
    $(this).closest("tr").fadeOut(3000, function() { 
        $(this).hide().find('.DeleteLineItem').click();
    }); 
});

Shankar在聊天中帮助了我,我们最终这样做了:

$(".TempDeleteLineItem").live('click', function() { 
    var $this = $(this);
    $(this).closest("tr").fadeOut(1000, function() { 
       $(this).hide();
       $this.prev('.DeleteLineItem').click();
    }); 
    return false;
});

最新更新