JQuery树视图和wp_list_ages

时间:2012-01-19 作者:AlxVallejo

我想用jQuery TreeView 在wp\\u list\\u页面上编写脚本,以获得良好的可折叠树效果。

脚本要求我向列表元素添加一些类,例如:

<ul id="red" class="treeview-red">
所以我试着把这个放在我的模板中:

首先,通过wp\\u enqueue\\u script()在我的模板页面上加载脚本

wp_enqueue_script("av_jquery_tree");
get_header();
其中,插件中定义了“av\\u jquery\\u tree”:

function av_jquery_tree() {
wp_register_script(\'jquery.treeview\', get_template_directory_uri() . \'/js/jquery.treeview/jquery.treeview.js\', array(\'jquery\'), \'1.0\' );
wp_register_script(\'jquery.cookie\', get_template_directory_uri() . \'/js/jquery.treeview/jquery.cookie.js\', array(\'jquery\'), \'1.0\' );
wp_enqueue_script(\'jquery.treeview\');
wp_enqueue_script(\'jquery.cookie\');
}
add_action(\'wp_enqueue_scripts\', \'av_jquery_tree\');
其次,为了向页面上的第一个ul元素添加类和id,我只需在调用wp\\u list\\u页面的上方插入以下脚本:

<script>
    jQuery(document).ready(function(){
    jQuery("ul").first().attr("id", "red").addClass("treeview-red");
    });
</script>
不幸的是,我的输出只是wp\\u list\\u页面上的一堆红线。还请记住,我使用的是漫反射主题preloads jquery.

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

EDIT: 在与AlxVallejo聊天后,我们找到了一个解决方案。下面是我们讨论的内容:

您没有正确使用wp_enqueue_scripts 钩子及其附带的函数,正如我告诉您的,这些钩子和操作需要在functions.php. 您还发现自己没有使用jQuery初始化TreeView脚本。

如果其他人有这个问题,聊天日志就在这里,我们做了一些故障排除,我解释了一些事情,但基本上都在下面的链接上:

http://chat.stackexchange.com/rooms/2258/discussion-between-alxvallejo-and-jared


正如kaiser所指出的,您不应该在WP核心中添加或编辑任何文件,因此将脚本从wp-includes 是个禁忌。

此外,jQuery没有正常运行。与所有jQuery一样,当DOM准备就绪时,应该使用类似的内容(稍微修改一下以获得更好的功能):

<script>
    jQuery(document).ready(function(){
        jQuery("ul:first-child").attr("id", "red").addClass("treeview-red");
    });
</script>
但你也可以创建一个文件jquery.treeview.addclass.js 并使用WP将其排队(见下文)以最佳实践来完成这一点。

对于正在排队的脚本,请尝试以下操作(假设您正在编辑活动主题的functions.php):

function my_enqueue_scripts() {
    wp_enqueue_script( "jquery" );
    wp_enqueue_script( "jquery-treeview", get_bloginfo( "template_url" ) . "/path/to/jquery.treeview.js" );
}
add_action( "wp_enqueue_scripts", "my_enqueue_scripts" );
这只是不正确使用这些语言/方法的问题。如果你的问题仍然存在,请用更多信息更新你的问题,说明原因,我将扩大我的答案(并删除我的反对票)。

结束

相关推荐

使jQuery库在插件文件之前加载

我正在使用一些jQuery插件,比如validate。但是它们都是在由WordPress和my theme自动加载的Jquery库之前加载的。我需要在之后加载插件,所以有没有办法让Jquery在函数中首先加载。php-以便我可以使用它的前端和管理。我目前正在函数中加载以下内容。phpwp_enqueue_script(\'validation\', get_bloginfo(\'template_url\') .\"/js/jquery.validate.min.js\"); w