Jquery ui Drupal8-jQueryUI在自定义模块中实现手风琴或制表符

Jquery ui Drupal8-jQueryUI在自定义模块中实现手风琴或制表符,jquery-ui,drupal,drupal-8,Jquery Ui,Drupal,Drupal 8,在Drupal8中,如何在自定义模块中实现accordion或tab元素。。。例如: 已设置自定义模块(包括文件夹结构)。。。模块中的content函数在渲染数组中输出以下html(基本上是通过使用“数组('#type'=>'markup',“#markup'=>$html)”等将创建手风琴元素的html推送到一个数组中,该数组将附加到渲染数组中,并且代码确实出现在html页面中): …当我检查页面的html时,它加载javascript文件,文件就在那里,并且还添加了以下行“window.a

在Drupal8中,如何在自定义模块中实现accordion或tab元素。。。例如:

  • 已设置自定义模块(包括文件夹结构)。。。模块中的content函数在渲染数组中输出以下html(基本上是通过使用“数组('#type'=>'markup',“#markup'=>$html)”等将创建手风琴元素的html推送到一个数组中,该数组将附加到渲染数组中,并且代码确实出现在html页面中):

  • …当我检查页面的html时,它加载javascript文件,文件就在那里,并且还添加了以下行“window.alert”(“LOADED BESPOKE JS SCRIPT!”);“已成功执行

    3A)对于clarities,我已将以下代码添加到.libraries.yml文件中:

    dataAnalytics.jqui:
      version: VERSION
      header: true
      css:
        theme:
          css/test.css: {}
          css/jquery-ui.css: {}
      js:
        libraries/js/bespokescript1.js: {}
      dependencies:
        - core/jquery
        - core/jquery.ui.accordion
    
    4) 即使按以下方式尝试javascript(注意:alert命令执行正确,但是
    $(“#accordian”).accordio();
    没有效果,尽管
    alert
    命令确实运行):


    问题:accordion元素不会呈现为accordion,就像标准HTML文本一样,例如JQuery位没有被执行。

    代码的一些注释。如果您想在模块中使用Drupal,请将此

    - core/drupal.ajax
    - core/drupal
    - core/drupalSettings
    
    dependencies
    下的MODULE.libraries.yml中,或者至少在
    core/drupal
    下。这表示您的东西需要drupal,所以它会在脚本之前加载它。这是必要的,因为drupal 8不会加载库,如果没有任何模块/主题需要它!请注意这一点

    使用此选项,而不是在第四点中使用:

    (function ($, Drupal) {
        //add drupal 7 code
        Drupal.behaviors.myfunction = {
            attach: function(context, settings) {
            //end drupal calls
    
            //some jquery goodness here...
                $( "#accordion" ).accordion( {
                    header: "li",
                    collapsible: true
                } );
    
                alert("search_results.js properly loaded");
            }
        }
    })(jQuery, Drupal);
    

    如果您不想使用Drupal,只需从那里删除。如果您也使用了其他东西,请添加到那里。这是Drupal 8标准的一种,请在
    core
    目录下搜索此
    Drupal.behaviors
    ,您会发现许多示例。

    问题已解决…问题已解决…部分问题与header:true的声明有关在.libraries.yml文件中,这意味着定义手风琴的定制文件在加载Drupal.js文件之前加载(因此收到的ReferenceError:Drupal error not defined)…javascript是(函数($){Drupal.behaviors.myModuleBehavior={attach:function(context,settings){$('#手风琴();};};})(jQuery);此外,行数组_push($strn,“”)被更改为删除chr(22),并替换为“我认为您应该将您的评论作为答案发布并接受”it@golddrangon007感谢您花时间回答并帮助您了解情况,非常感谢
    $(function ($) {
    //add drupal 7 code
    Drupal.behaviors.myfunction = {
        attach: function(context, settings) {
        //end drupal calls
    
        //some jquery goodness here...
            $( "#accordion" ).accordion( {
                header: "li",
                collapsible: true
            } );
    
            alert("search_results.js properly loaded");
        }
    }
    });
    
    - core/drupal.ajax
    - core/drupal
    - core/drupalSettings
    
    (function ($, Drupal) {
        //add drupal 7 code
        Drupal.behaviors.myfunction = {
            attach: function(context, settings) {
            //end drupal calls
    
            //some jquery goodness here...
                $( "#accordion" ).accordion( {
                    header: "li",
                    collapsible: true
                } );
    
                alert("search_results.js properly loaded");
            }
        }
    })(jQuery, Drupal);