第一次回发后,图像按钮不会触发jQuery / postback?

时间:2011-08-11 14:49:34

标签: jquery asp.net

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

<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按钮(隐藏的那个)的click事件。 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,淡出行,提醒你,回发帖子并删除行...它基本上有效!那很好,我的问题是什么?

我的问题是在这篇文章之后立即回来(现在我的gridview中有2行)如果我尝试点击ibTempDelete按钮没有任何反应,它似乎不再可点击了?警报甚至不显示。

所以我的问题是我对asp.net和postbacks的运作方式缺乏了解。一旦我点击第一个回发,为什么按钮不再可点击?

2 个答案:

答案 0 :(得分:2)

当您致电__doPostBack时,页面无论如何都要刷新,为什么要拨打$(this).remove()。也许你可以在致电__doPostBack之前给它打电话。即使在回发后页面刚刚加载,事件处理程序也应该按原样运行。尝试使用直播。

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

答案 1 :(得分:0)

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

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