php 未触发Javascript

gstyhher  于 2022-11-21  发布在  PHP
关注(0)|答案(4)|浏览(127)

我想在单击类subcat-tab时触发js函数,但它似乎不起作用。我没有收到任何错误消息,但什么也没有发生。
我在Magento 2的一个phtml文件下。

<a href="#subcat_<?= $subcatId ?>" class="subcat-tab" title="<?= $subcat['label'] ?>" data-categoryid="<?= $subcatId ?>">

<script type="text/javascript">
    define([
        'jquery'
    ], function ($) {
        console.log("ok");
        $('.subcat-tab').click(function (e) {
            console.log(e);
        }
    });
</script>
czq61nw1

czq61nw11#

使用require而不是define以某种方式修复它,但不知道为什么。

gdrx4gfi

gdrx4gfi2#

在模板文件中初始化javascript时,使用require是正确的方法。define用于web/js文件夹中的javascript文件。

zfciruhq

zfciruhq3#

试试这个
将“$('. subcat-tab').click(函数(e){”替换为“$('. subcat-tab').on('click',函数(e){”

<script type="text/javascript">
    define([
        'jquery'
    ], function ($) {
        console.log("ok");
        $('.subcat-tab').on('click',function(e){
            console.log(e);
        }
    });
</script>
hmmo2u0o

hmmo2u0o4#

在这种情况下,请使用require,而不要使用define。

<script type="text/javascript">
   require(
      [
        "jquery"
      ], function($) {
         console.log("ok");
         $('.subcat-tab').on('click',function(e){
            console.log(e);
         }
   });
</script>

或与define一起使用:

  • 1:创建新的sample.js文件:*
define(
      [
        "jquery"
      ], function($) {
           return {
              sampleClick: function(x){
                 console.log("ok");
                 $('.subcat-tab').on('click',function(e){
                      console.log(e);
                 }
              }
           }
   })
  • 2:在主文件中调用 *
<script type="text/javascript">
    require(
       [
        "jquery",
        "sample"
       ], 
       function($, sample) {
           sample.sampleClick();
    });
</script>

更多信息

相关问题