更新attr(“onclick”)问题

时间:2010-07-27 19:42:52

标签: jquery attr

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

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

注: - HLevel (文本框) - PSave (LinkBut​​ton)

 $('#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");
      }

  });

3 个答案:

答案 0 :(得分:1)

您需要更改click事件处理程序,如下所示:

$('#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');
     }

 });

答案 1 :(得分:1)

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

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

});

而不是removeAttr使用unbind。

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

答案 2 :(得分:1)

使用unbind()click()方法:

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

如果您使用jQuery,请尝试尽可能多地使用它,并且不要混合样式。