jQuery没有在ASP.net中执行.toggleClass()

时间:2015-01-20 16:29:30

标签: jquery html css asp.net css3

假设我们有用jQuery编写的代码片段:

$("#saveButtonFull").on("click", function () {
    $(".inner").toggleClass("progressBar");
    $(".save").toggleClass('textColorize').html("Saved");
});

...因此,应该填写"保存" 自定义按钮的 animation 。它确实做到了!但是我的工作平台是在 ASP.net 上,我在服务器端进行了回复'点击' 事件,该事件执行CRUD操作SQL,在这行aspx文件中:

<div id="saveButtonFull" class="buttonFull btnBorderGreyOut" onclick="document.getElementById('<%= ButtonA.ClientID %>').click()"></div>

我如何实现jQuery逐行运行click事件(在这种情况下.toggleClass()没有被执行!)并且还让服务器端执行?

4 个答案:

答案 0 :(得分:1)

您可以将动画绑定在&#39; mousedown&#39;事件而不是点击&#39;。 :)

答案 1 :(得分:0)

您可以执行以下操作之一:

  • 执行一个服务器端事件(执行你的CRUD操作),然后注册一个运行js代码(切换类)的JS函数:

        if (!ClientScript.IsStartupScriptRegistered("alert"))
        {
            Page.ClientScript.RegisterStartupScript(this.GetType(),
                "alert", "alertMe();", true);
        }
    

  • 创建按钮runat="server",然后通过访问
  • 后面的代码中的CSS属性来设置CSS类

  • 切换到AJAX(将您的逻辑声明为WebMethod - 如果可以使其成为静态并调用POST,您可以在其中处理asudroniosly的crud操作并在回发js中切换css类功能)

    我希望这可以帮到你

编辑:

我已经建立了一个使用第一种和第三种可能性的小例子:

代码隐藏文件: https://gist.github.com/ostelaymetaule/5b4a5c401d2c7ba7d423  aspx文件(js和样式): https://gist.github.com/ostelaymetaule/4991c21c31f717152bad

检查出来

答案 2 :(得分:0)

由于您已经对按钮的ID定义了操作,我假设这是唯一需要此操作的按钮。修改您的javascript函数,如下所示:

$("#saveButtonFull").on("click", function () {
    $(".inner").toggleClass("progressBar");
    $(".save").toggleClass('textColorize').html("Saved");
    __doPostBack('<%=ButtonA.ClientID %>','');
});

这将调用服务器端按钮的回发。如果__doPostBack不起作用,您也可以用document.getElementById('<%= ButtonA.ClientID %>').click();

替换它

答案 3 :(得分:0)

最后,我得到了答案,感谢 Lorin 的建议,并帮助我找到解决问题的方法。结果是jQuery运行 .toggleClass(),服务器端异步,快速和平滑地执行CRUD操作。

我发现我的页面中缺少 SriptManager 控件,因此添加了:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>

请注意 EnablePageMethods 设置为“ true ”,这使用户可以输入服务器端Web方法并让它执行代码。

然后我删除了 #saveButtonFull 上的 .click(),而是在标记本身中添加了“ onclick ”属性:

<div id="saveButtonFull" class="buttonFull btnBorderGreyOut" onclick="saveButtonProgress()"></div>

为什么你问我?因为它不会触发.click()事件,所以纯JS的人就完成了工作。另外我了解到我无法在Public Static String YouNameIt()Web方法中包含TextBoxes之类的非静态成员,因此我不得不从客户端安排一个数组并将其包含在“data”属性中。 .ajax()事件如:

 function saveButtonProgress() {
     if (flag === true) {
         var vargu = [];
         $(".textBox").each(function () {
             var currentTxtBoxValue = $(this).val();
             vargu.push(currentTxtBoxValue);
         });

         $.ajax({
             url: "http://localhost:49795/UserProfile.aspx/UpdateProfile",
             type: "POST",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             data: "{'profileArray': '" + vargu + "'}",
             async: true,
             success: onSuccess,
             error: onFailure
         });

         function onSuccess(msg) {
             var success = msg.d;
             console.log(success);
             $(".inner").toggleClass("progressBar");
             $(".save").toggleClass("textColorize");
         }

         function onFailure(msg) {
             var failure = "Error: " + msg.d;
             console.log(failure);
         }
     }
 }