用jquery点击按钮替换标准javascript onclick

用jquery点击按钮替换标准javascript onclick,javascript,jquery,Javascript,Jquery,下面是一些代码,我正在使用这些代码将preventDefault添加到所有现有的遗留onlick代码中,并将其替换为JQuery。这似乎管用,但你能想到它有什么问题吗。我们计划完全迁移到jQuery,但这只是一个内部修复。有没有更快或更干净的方法来做这件事 <html> <head><title>Test</title> <script src="includes/jquery/jquery-1.5.1.min.js?t=20

下面是一些代码,我正在使用这些代码将preventDefault添加到所有现有的遗留onlick代码中,并将其替换为JQuery。这似乎管用,但你能想到它有什么问题吗。我们计划完全迁移到jQuery,但这只是一个内部修复。有没有更快或更干净的方法来做这件事

<html>
    <head><title>Test</title>
    <script src="includes/jquery/jquery-1.5.1.min.js?t=20130606"></script>
    </head>
<body>
    <form name="testing">

    <script>
        var robtesting = 100;

        </script>

    <button id="test">0</button>
    <button onclick="alert('1');">1</button>
     <button onclick="alert(this.form.tagName); alert(robtesting); ">1</button>
    <button >2</button>
    </form>
    <script>


     jQuery('#test').click(function(){
        alert('0');    
     });

         jQuery(document).ready(function(){
    jQuery('button').each(function(){
        var button = jQuery(this);
        var hasclick = button.attr("onclick")
        var hasJQueryClick = false;
        var eventsObject = button.data("events");
        if(typeof eventsObject != 'undefined'){
            jQuery.each(eventsObject, function(i, e) {
                if(i == 'click'){
                    hasJQueryClick = true;
                }
            });
        }

        if(typeof hasclick == 'function'){
            button.removeAttr("onclick");
            button.click(function(event){
               event.preventDefault();
               this.tryItOutRob = hasclick;
               this.tryItOutRob();
            });
        } else if(!hasJQueryClick) {
           button.click(function(event){
               event.preventDefault();
           });
        }

    });
}) ;
    </script>
</body>
</html>

测验
var=100;
0
1.
1.
2.
jQuery(“#测试”)。单击(函数(){
警报('0');
});
jQuery(文档).ready(函数(){
jQuery('button')。每个(函数(){
var按钮=jQuery(这个);
var hasclick=button.attr(“onclick”)
var hasJQueryClick=false;
var eventsObject=button.data(“事件”);
if(eventsObject的类型!=“未定义”){
每个(eventsObject,function,i,e){
如果(i=='click'){
hasJQueryClick=true;
}
});
}
if(hasclick的类型==“函数”){
移除按钮(“onclick”);
按钮。单击(功能(事件){
event.preventDefault();
this.tryItOutRob=hasclick;
this.tryItOutRob();
});
}否则如果(!hasJQueryClick){
按钮。单击(功能(事件){
event.preventDefault();
});
}
});
}) ;

它确实可以工作,但每次加载页面时,JavaScript都需要额外的工作负载。我建议打印出整个更新的HTML,并用它替换旧的HTML。

此解决方案可以,没有问题tryItOutRob()函数定义在哪里?您应该在这一行创建函数时问这个问题。tryItOutRob=hasclick;我的问题是,这些都是PHP生成的代码,我们大概有500个这种遗留javascript代码的实例。你能用PHP删除这些onclick属性吗?那么工作负载将主要是服务器端的。有趣的想法。。。可能会编写一个脚本来解析php文件,然后在按钮后添加一个jquery onclick事件。e、 g.到jQuery('#abc')。单击(函数(){test();返回false})