.live不是函数的主题中存在jQuery错误

时间:2020-08-16 作者:JustWondering

我正在尝试解决Chrome控制台为我使用的主题显示的一个错误,这个错误已经存在了很长一段时间了。我不懂javascript,所以不知道如何修复它,经过一些研究和阅读,我唯一的猜测是。生活应该是。根据错误,它使用JQuery 1.12.4,我读到了。从版本1.9开始删除live。我在theme makers论坛上发了帖子,但我想我会在这里更快地得到帮助。这是错误指向的代码块,它指向“quot;”;。live(\'click\',function(event){";但包括整个部分,我也注意到了一个缺失的}结尾,我在下面留下了一个块,它在函数中的具体情况。js文件。

$(\'.hm_icon_search > a, .top_add_card\').live(\'click\', function(event){

var parent = $(this).parent();

var $this_btn = $(this);

var $target_block = $this_btn.siblings(\'div\');

event.preventDefault();

event.stopPropagation();

if(parent.hasClass(\'active\') && $target_block.hasClass(\'hm_active_prep\')){

$target_block.fadeOut(function(){

    parent.removeClass(\'active\');
    }
 }

});

1 个回复
最合适的回答,由SO网友:Jitesh Dhamaniya 整理而成

如果你问什么是替代品.live() 是的。on()`,用于为动态添加的元素启用事件处理,这就是您将如何使用它。

$(document).on("click","#test-element",function() {});
因此,对于您的代码。

$(\'body\').on(\'click\', \'.top_add_card\', function(event){

    var parent = $(this).parent();
    var $this_btn = $(this);
    var $target_block = $this_btn.siblings(\'div\');
    
    event.preventDefault();
    event.stopPropagation();
    
    if(parent.hasClass(\'active\') && $target_block.hasClass(\'hm_active_prep\')){
        $target_block.fadeOut(function(){
            parent.removeClass(\'active\');
        }
    }
});
这也适用于动态添加元素。因为这是使用的主要目的。on()。请在此处阅读更多信息。https://api.jquery.com/on/