jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么我的PostBack发生在我的jQuery点击事件之前?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是jQuery的新手,但我的页面上有一些链接可以切换单击时可见的表单部分,或者如果禁用了 javascript,它会执行完整的回发以切换这些部分 @H_675_5@ @H_675_5@它在我的测试环境中工作正常,PostBACk发生在jQuery脚本之后,但是一旦我部署它,PostBACk就会发生在jQuery click事件之前.它部署在运行IIS 6.0的Windows 2003服务器上,而我的测试环境是Windows XP / IIS 5.1 / VS2010

@H_675_5@这是我正在使用的代码.该脚本在生产中运行,如果我把它放在.ready()而不是.click()但在.click()我甚至没有得到警报,所以我假设问题是在jQuery脚本之前发生的PostBACk有机会执行.

@H_675_5@jQuery的:

@H_675_5@
$(document).ready(function () {
    // Toggle Details
    $('.toggleDetailsButton').click(function () {
        alert('test');
        $(this).parentsUntil(".parentRow").parent().next().toggleClass("hidden");
        return false;
    });
});
@H_675_5@代码隐藏:

@H_675_5@
Protected Sub rPDAta_ItemCommand(ByVal sender As Object,ByVal e As RepeaterCommandEventArgs) Handles rPDAta.ItemCommand
    // Manually toggle rows here
End Sub
@H_675_5@ASP:

@H_675_5@
<asp:repeater ID="rPDAta" runat="server">
    <ItemTemplate>
        <tr class="parentRow">
            ...
                <asp:Button runat="server" ID="cmdViewDetails" 
                    CommandName="ToggleDetails" Text="details"
                    CssClass="buttonAsLink toggleDetailsButton" />
            ...
        </tr>
        <tr id="rPDAta_DetailsRow" class="detailsRow hidden" runat="server">

        </tr>
    </ItemTemplate>
</asp:repeater>
@H_675_5@编辑

@H_675_5@根据下面评论中的建议,在onClientClick中运行jQuery函数会使页面按原样运行,但是我仍然想知道为什么PostBACk在我的测试环境中的jQuery事件之后,但在生产中的jQuery事件之前发生.

@H_675_5@我也注意到了两者之间的其他差异.例如,我还有一个按钮可以打开/关闭搜索div,它可以在测试中正常工作但不能在生产中工作.它使用$(‘.toggleSearchButton’).next()来获取搜索按钮下的div并切换它的类名.在生产中,此对象返回[object Object],但是调用.attr(‘class’)返回undefined(.attr(‘id’),. attr(‘tag’)和.nodeName).在我的测试环境中,它为我的搜索div返回正确的值.

@H_675_5@我已经在IE,FF和Chrome中测试了这种行为.在我的测试机器上,它在所有3上运行正常.在我的生产机器上,只有IE以它应该的方式工作.

解决方法

试试这个: @H_675_5@ @H_675_5@
$('.toggleDetailsButton').click(function (E) {
   if (e.stopPropagation) e.stopPropagation();
   if (e.preventDefault) e.preventDefault();

   .
   .
});
@H_675_5@认情况下,按钮会呈现提交按钮.您还可以设置UseSubmitBehavior =“false”使其成为< input type =“button”/>元素,看看是否能给你带来更好的结果.

大佬总结

以上是大佬教程为你收集整理的为什么我的PostBack发生在我的jQuery点击事件之前?全部内容,希望文章能够帮你解决为什么我的PostBack发生在我的jQuery点击事件之前?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。