2

如何将这些事件更改为 .live() 事件处理程序?

我以为我可以将 $(document).ready(function() ...to.... $(document).live(function() 以及 .keydown 和 .data 更改为 .live 但我不能似乎让它工作......请帮助。

$(document).ready(function(){
                $('#number').bind('keyup change focus', function(){
                        var field = this;
                        timer = setTimeout(function(){runSearch(field);}, 444);});                      
                $('#number').keydown(function(){clearTimeout(timer);});                 
                //url selection by specifics                
            $('#phone_book tr').data('bgcolor', '#aaf').hover(function(){
                 var $this = $(this);
                 var newBgc = $(this).data('bgcolor');
            $(this).data('bgcolor', $(this).css('background-color')).css('background-color', newBgc);
                 });  
                //url selection by specifics  
                $("#phone_book tr").click(function(){
                        var id = $(this).children().first().html();
                        var type = $(this).parents('table').siblings('div.module_header').html().toLowerCase();
4

3 回答 3

6

改变

.bind(...

.on(...

.live() 实际上已被弃用。

对于 .keyup()、.keydown() 之类的,将它们更改为 .on('keydown'... 等。

于 2012-12-20T19:40:20.927 回答
1

这是带有 .on 函数的代码示例。

$(document).ready(function(){
      $('#number').on('keyup change focus', function(){
             var field = this;
             timer = setTimeout(function(){runSearch(field);}, 444);});                      
            $('#number').keydown(function(){clearTimeout(timer);});                 
                //url selection by specifics

            $('#phone_book tr').data('bgcolor', '#aaf').hover(function(){
                    var newBgc = $(this).data('bgcolor');
                    $(this).data('bgcolor', $(this).css('background-color')).css('background-color', newBgc);});  
                //url selection by specifics  
            $("#phone_book tr").on('click', function(){
                     var id = $(this).children().first().html();
                     var type = $(this).parents('table').siblings('div.module_header').html().toLowerCase();
于 2012-12-20T20:19:04.650 回答
1

将 .bind() 更改为 .live()

请记住,在较新版本的 jQuery 中不推荐使用 live(),您应该改用 on()。您的某些事件可能还需要较旧的 delegate() 方法。

$('#number').live('keyup change focus', function(){
    var field = this;
    timer = setTimeout(function(){runSearch(field);}, 444);});                      
    $('body').delegate('#number', 'keydown', function(){clearTimeout(timer);});                 
        //url selection by specifics                
        $('body').data('bgcolor', '#aaf').delegate('#phone_book tr', 'hover, function(){
            var $this = $(this);
            var newBgc = $(this).data('bgcolor');
            $(this).data('bgcolor', $(this).css('background-color')).css('background-color', newBgc);
    });  
于 2012-12-20T19:42:42.420 回答