How to integrate a JS fiddle?

时间:2016-02-15 作者:Grégoire Llorca

尊敬的StackExchange社区:,

我的目标是在非常宽的HTML表上添加第二个水平滚动条。

我最近下载了一个JS文件,我想在我的网站上使用它:https://github.com/sniku/jQuery-doubleScroll/

I uploaded it on my child-theme directory 在/js/子文件夹下。

In my functions.php 文件中,我添加了以下行:

// Ajout du script pour la double scrollbar
function dsb_adding_scripts() {
    wp_register_script(\'doubleScroll\', get_stylesheet_directory_uri() . \'/js/jquery.doubleScroll.js\', array(\'jquery\'),\'0.3\', true);
    wp_enqueue_script(\'doubleScroll\');
}
add_action( \'wp_enqueue_scripts\', \'dsb_adding_scripts\' ); 

And also

function my_custom_js() {
    echo \'<script type="text/javascript">jQuery(document).ready(function($){jQuery("#double-scroll").doubleScroll();});</script>\';
}
add_action(\'wp_head\', \'my_custom_js\');
我不得不把这个功能注释掉,因为它会让整个网站一片空白。

这是什么my shortcode 看起来像:

// Shortcode for ARE
function display_ARE( $atts ) {
    // Attributes
    extract( shortcode_atts(
        array(
            \'id\' => \'\',
        ), $atts )
    );

    // Initialisation de la table de droite
    $echo .= \'<div class="table_ARE" id="double-scroll"><table id="very-wide-element">\';

    // VERY HUGE HTML TABLE PARSED AS A $echo VARIABLE

    // Conclusion de la table
    $echo .= \'</table></div>\';  

    // Affichage du résultat
    return $echo;
}
add_shortcode( \'ARE\', \'display_ARE\' );
在控制台中,我最终出现以下错误:

Uncaught TypeError: $.widget is not a function

1 个回复
SO网友:david_nash

你通过了true 作为$in_footer 参数到wp_register_script(), 但是my_custom_js() 正在收割台中加载。因此,doubleScroll在自定义js之后加载。

我会把my_custom_js() 在单独的javascript文件中,以便您可以控制依赖项。

创建my\\u custom\\u js。js与双滚动脚本位于同一位置:

jQuery(document).ready(function($) {
    $("#double-scroll").doubleScroll();
}
然后在你的函数中。php使用:

function dsb_adding_scripts() {
    wp_enqueue_script(
        \'doubleScroll\',
        get_template_directory_uri().\'/js/jquery.doubleScroll.js\',
        array(\'jquery\')
    );

    wp_enqueue_script(
        \'my_custom_js\',
        get_template_directory_uri().\'/js/my_custom_js.js\', 
        array(\'jquery\', \'doubleScroll\')
    );
}

add_action(\'wp_enqueue_scripts\', \'dsb_adding_scripts\');