首页 > 解决方案 > 自定义 WooCommerce 消息删除 HTML 标签上的 onClick 事件

问题描述

我已经覆盖notices/success.php了模板文件,以这种方式修改内容:

<?php foreach ( $messages as $message ) : ?>
    <div class="woocommerce-message" role="alert">
        <span>
            <?php
            echo wc_kses_notice( $message );
            ?>
        </span>
        <div onClick="alert('LOL')">TEST</div>
    </div>
<?php endforeach; ?>

当我现在加载页面时,所有元素都已生成,但我的 onClick 已删除:

<div class="woocommerce-message" role="alert"> <span> Kontodetails erfolgreich geändert. </span><div>TEST</div></div>

为什么会发生这种情况?如何在此消息中的每个 div 或 span 中保留我的 onClick?

标签: javascriptphphtmlwordpresswoocommerce

解决方案


为避免此问题,<div>您应该使用 jQuery 脚本,而不是在标签上使用 onClick 事件:

1) 被覆盖的模板 notices/success.php文件(摘录)

<?php foreach ( $messages as $message ) : ?>
    <div class="woocommerce-message" role="alert">
        <span>
        <?php
            echo wc_kses_notice( $message );
        ?>
        </span>
    </div>
    <div class="message-click">TEST</div>
<?php endforeach; ?>

2)jQuery脚本:

add_action( 'wp_footer', 'message_onclick_event');
function message_onclick_event() {
    ?>
    <script>
    jQuery(function($){
        $(document.body).on('click', 'div.message-click', function(){
            alert('LOL');
        })
    });
    </script>
    <?php
}

代码在您的活动子主题(或活动主题)的 function.php 文件中,或在外部注册的 JS 文件中。

3)html输出:

<div class="woocommerce-message" role="alert">
    <span>Hello World</span>
</div>
<div class="message-click">TEST</div>

4)截图 (点击“测试”时)

在此处输入图像描述


推荐阅读