【问题标题】:Updating attr("onclick") issue更新 attr("onclick") 问题
【发布时间】:2010-07-27 19:42:51
【问题描述】:

我有下一个代码来处理 ASP.Net 控件。

当结果变量(res)等于“NO”时,我正在尝试向按钮上的“onclick”事件添加一些 javascript 代码。问题是它第一次将值分配给“onclick”它工作正常,但是当执行 removeAttr 并再次调用该函数并且 res 再次等于“NO”时它不会在“ onclick”事件。那么这有什么问题呢?谢谢你的帮助。 =)

图例: - HLevel(文本框) - PSave(链接按钮)

 $('#HLevel').blur(function () {
      // SOME CODE HERE BEFORE THE ISSUE CODE
      var res = $(msg).find("string").text();
      if (res == "NO") {
         $('#PSave').attr("onclick", "javascript:return confirm('some text');");
      } else {
        $('#PSave').removeAttr("onclick");
      }

  });

【问题讨论】:

    标签: jquery attr


    【解决方案1】:

    使用unbind()click() 方法:

    if (res == "NO") {
        $('#PSave').click(function() {return confirm('some text');});
    } else {
        $('#PSave').unbind("click");
    }
    

    如果你使用jQuery,尽量使用它,不要混用样式。

    【讨论】:

    • 效果很好!!!非常感谢菲利克斯的建议!!!从现在开始,我将使用更多的 jquery 以避免此类问题。
    【解决方案2】:

    您需要像这样更改点击事件处理程序:

    $('#HLevel').blur(function () {
         // SOME CODE HERE BEFORE THE ISSUE CODE
         var res = $(msg).find("string").text();
         if (res == "NO") {
            $('#PSave').click(function(){
                return confirm('some text');
            });
         } else {
            $('#PSave').unbind('click');
         }
    
     });
    

    【讨论】:

      【解决方案3】:

      为什么不使用 jquery 而不是 javascript onclick 处理程序。那些很乱。

      $('#PSave').click(function(){
          confirm('some text');
      
      });
      

      使用 unbind 代替 removeAttr。

      $('#PSave').unbind();
      

      【讨论】:

        猜你喜欢
        • 2016-05-12
        • 2011-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        • 2012-11-13
        相关资源
        最近更新 更多