<div onclick="show(this,'1')";>show</div><script type="text/javascript">
function show(obj,val){
   $(obj).attr("onclick",test());
         }
function test(){
alert("000000");
}
</script>
想实现的效果是:当点击事件发生后,更换该点击处函数为另一个函数,待下次点击时使用!我用jQuery这个方法,$(obj).attr("onclick",test()); 每次一点击每次都执行更换后的函数,请问怎么处理!!!

解决方案 »

  1.   


    $(obj).attr("onclick",test());
    改成
    $(obj).unbind("click");
    $(obj).bind("click",function(){
       test();
    });
    <div id="test">show</div>
    或者用toggle();
    $("#test").toggle(function(){
       $(this).html("hide");
    },function(){
       $(this).html("show");
    });
      

  2.   

    应该不是用attr()实现 http://www.w3schools.com/jquery/html_attr.asp这是attr()的一些用法
      

  3.   

    定义一个变量来判断是否被点击过,初始为false点击以后设为true根据这个变量来判断
    例:
    var temp = false;
    $(obj).click(function(){
       if(temp == false){
            //执行第一次要执行的函数
            temp == false
       }else{ 
           test();
       }
    });
      

  4.   

    楼上的有误,修改下temp的值
    var temp = false;
    $(obj).click(function(){
      if(temp == false){
      //执行第一次要执行的函数
      temp == true;
      }else{  
      test();
      }
    });
      

  5.   

    本人觉得你应该把更换的方法写在第一次Click方法执行后。。
      

  6.   

    $(obj).attr("onclick",test());
    这里是要把函数句柄放进去:test但是你直接调用了test()函数,所以就执行了一遍
      

  7.   

    可能有多个不同函数,每次需要轮流替换用toggle();不可能了按此方法:
    $(obj).attr("onclick",test());
    改成
    $(obj).unbind("click");
    $(obj).bind("click",function(){
    test();
    });
    为什么 老是一次性都执行了呢?
      

  8.   

    toggle支持多个啊。
    什么一次性都自执行了?
      

  9.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js"></script>
    </head>
    <body>
    <div>
      <div>test test test test test test</div>
      <div style="margin-left:500px;" onclick="test0(this,'cs')";>Test</div>
    </div>
    <script type="text/javascript">
    function test0(obj,val){
    alert("000000000");
    //$(obj).attr("onclick",test1(obj,val));
    $(obj).unbind("click");
    $(obj).bind("click",function(){test1(obj,val);});
    }

    function test1(obj,val){
    alert("111111111");
    //$(obj).attr("onclick",test2(obj,val));
    $(obj).unbind("click");
    $(obj).bind("click",function(){test2(obj,val);});

    }

    function test2(obj,val){
    alert("222222222");
    //$(obj).attr("onclick",test0(obj,val));
    $(obj).unbind("click");
    $(obj).bind("click",function(){test0(obj,val);});

    }
    </script>
    </body>
    </html>
    这是源代码 大家测试下??
      

  10.   

    测试了一下 确实是不行  难道是因为jquery绑定事件的时候还触发事件嘛?
      

  11.   

    $(obj).removeAttr("onclick");

    $(obj).attr("onclick","test1("+$(obj)+","+val+");");//这块有点问题
      

  12.   

    感谢楼上的提醒,已经解决,代码如下:
    alert("000000000");
    $(obj).removeAttr("onclick");
    $(obj).attr("onclick","test1(this,'"+val+"');");