停止运行主题的jQuery函数

时间:2019-12-12 作者:Ryszard Jędraszyk

在里面一个主题的js文件,有两个事件使用一个函数:

$j( window ).on( \'load\', function() {   
    functionName();
} );

$j( document ).ajaxComplete( function() {   
    functionName();
} );
我想阻止它通过任何一个函数执行。php或我自己的插件,因为我已经编写了相同的功能。我不想编辑。主题的js文件。这完全可行吗?

2 个回复
最合适的回答,由SO网友:Raba 整理而成

我们需要知道脚本是如何排队的,但如果操作正确,您将能够删除该脚本.js 文件使用wp_dequeue_script.

如何正确将脚本排队

function my_register_script()
    //Registers a script to be enqueued later
    wp_register_script(\'script-handle\', plugins_url(\'script.js\', __FILE__));
}
add_action( \'wp_enqueue_scripts\', \'my_register_script\', 10);


function my_enqueue_script(){
    //Enqueue the script
    wp_enqueue_script(\'script-handle\');
}
//hook to another action
add_action(\'other_action\', \'my_enqueue_script\', 10);
Thewp_register_script 注册要使用的脚本,传递$handle (id)和脚本$src (脚本的url)。这个wp_enqueue_script 将该脚本添加到我们的页面。

也可能发生以下情况:wp_register_script 未使用。在这种情况下$src 传递给wp_enqueue_script 像这样。

wp_enqueue_script(\'script-handle\', plugins_url(\'script.js\', __FILE__));
如何删除正确注册的脚本如果脚本已正确排队,则可以将其从functions.php 通过$handlewp_dequeue_script.

wp_dequeue_script(\'script-handle\');
Keep in mind 该函数应该在脚本排队后使用,因此您应该检查wp_enqueue_script 上钩并运行wp_dequeue_script 稍后,将其挂接到相同的操作,但优先级更高。

遵循相同的示例wp_enqueue_script 连接到具有$priority 10,因此您应该以更高的优先级挂接出队列

function my_dequeue_script(){
    //Removes the enqueued script
    wp_dequeue_script(\'script-handle\');
}
//hook to another action
add_action(\'other_action\', \'my_dequeue_script\', 11);
其中11在add_action 函数是$priority (越大,执行越晚)

Do not forget 可能有一些脚本取决于您正在退出队列的脚本。如果是这种情况,则不会加载这些脚本。

SO网友:Hasan Uj Jaman

我想您只是想删除其中一个事件侦听器。你可以用这个wp_enqueue_script 钩因为大多数wordpress插件和模板文件都加载在这里。因此,在jquery加载之后添加一个内联javascript代码。

add_action( \'wp_enqueue_script\', \'unbind_js_event\' );
function unbind_js_event() {
    $script = "
        $j( document ).ready( function() {
            $j( document ).unbind( \'ajaxComplete\' );
            $j( window ).unbind( \'load\' );
        });
    ";
    wp_add_inline_script( \'jquery\', $script );
}

相关推荐

如何使用jQuery将TinyMCE WYSIWYG编辑器添加到文本区域?

使用jQuery(作为主题或插件的一部分)如何将所见即所得(TinyMCE)富文本编辑器添加到<textarea>? 具体来说,我想在满足某些条件(表单的更改等)后激活它。我有一个计时器事件,出于多种原因定期检查文本大小,这将是激活编辑器的函数。我需要做什么才能使TinyMCE在前端可用,并根据需要连接/激活它?(看起来用户正在编写大量文本,请激活TinyMCE)。我想我需要排队,但除此之外,我只是在猜测。我的问题与this one 但不同之处在于,我想用jQuery实现这一点。也相关,thi