Jquery只在header.php中工作

Jquery只在header.php中工作,php,jquery,wordpress,Php,Jquery,Wordpress,我正在尽我所能阅读jQuery,但本周我喜欢(需要)完成一个网站,我可以在过去八个小时内找到解决这个问题的方法 设置 我正在使用ajaxed wp主题,我正在根据自己的喜好进行定制 问题 我已经编写了一个简单的函数来更改标题图像和标题文本,当您单击主导航链接时 该函数在header.php中可以使用,但在我包含在index.php中的自定义首页(main\u navp.php)中不起作用。 在navp.php上,单击一次会出现一个图像,其变化应与单击导航栏相同 index.php 在main_

我正在尽我所能阅读jQuery,但本周我喜欢(需要)完成一个网站,我可以在过去八个小时内找到解决这个问题的方法

设置

我正在使用ajaxed wp主题,我正在根据自己的喜好进行定制

问题

我已经编写了一个简单的函数来更改标题图像和标题文本,当您单击主导航链接时

该函数在
header.php
中可以使用,但在我包含在
index.php
中的自定义首页(
main\u navp.php
)中不起作用。 在
navp.php
上,单击一次会出现一个图像,其变化应与单击导航栏相同

index.php

main_navp.php
(包含在
header.php
之后的
index.php
中)函数不适用于此项。但它应该由
$([p[id='les\u mp'])触发。如上图所示,live(“单击”,function()

<script src='<?php bloginfo('template_directory'); ?>/js/jjquery-1.5.2.min.js'></script>

主jquery在header.php中进行了调整

 <!-- http://benalman.com/projects/jquery-urlinternal-plugin/ -->
<script src='<?php bloginfo('template_directory'); ?>/js/jquery.ba-urlinternal.min.js'></script>

    <!-- http://www.asual.com/jquery/address/ -->
    <script src='<?php bloginfo('template_directory'); ?>/js/jquery.address-1.3.2.min.js'></script>

    <script>

        // Original JavaScript by Chris Coyier
        // Updated October 2010 by Stewart Heckenberg & Chris Coyier

        $(".home li.home").removeClass("home").addClass("current_page_item");
        $("#column-wrap").append("<img src='<?php bloginfo('template_directory'); ?>/images/ajax-loader.png' id='ajax-loader' />");

        $("#s").focus(function() {
            if ($(this).val() == "Search...") {
                $(this).val("");
            }
        });

        if ($(".widget_categories li").length%2 != 0) {
            $(".widget_categories ul").append("<li><a>&nbsp;</a></li>");
        }

        if ($(".widget_tag_cloud a").length%2 != 0) {
            $(".widget_tag_cloud").append("<a>&nbsp;</a>");
        }

        // The reason this JavaScript is in footer.php instead of its own file is basically the next line.
        var base             = '<?php bloginfo('url'); ?>',
            $mainContent     = $("#main-content"),
            $ajaxSpinner     = $("#ajax-loader"),
            $searchInput     = $("#s"),
            $allLinks        = $("a"),
            $el;

        $('a:urlInternal').live('click', function(e) { 

            $el = $(this);

            if ((!$el.hasClass("comment-reply-link")) && ($el.attr("id") != 'cancel-comment-reply-link')) {         
                var path = $(this).attr('href').replace(base, '');
                $.address.value(path);
                $(".current_page_item").removeClass("current_page_item");
                $allLinks.removeClass("current_link");
                $el.addClass("current_link").parent().addClass("current_page_item");
                return false;
            }

            // Default action (go to link) prevented for comment-related links (which use onclick attributes)
            e.preventDefault();

        });  

        $('#searchform').submit(function() {  
            var s = $searchInput.val();
            if (s) {
                var query = '/?s=' + s;
                $.address.value(query);  
            }
            return false;
        });  

        $.address.change(function(event) {  
            if (event.value) {
                $ajaxSpinner.fadeIn();
                $mainContent
                    .empty()
                    .load(base + event.value + ' #inside', function() {
                        $ajaxSpinner.fadeOut();
                        $mainContent.fadeIn();
                    });  
            } 

            var current = location.protocol + '//' + location.hostname + location.pathname;
            if (base + '/' != current) {
                var diff = current.replace(base);
                location = base + '/#' + diff;
            }

        });                 

    </script>

  </div>

由于您正在对页面进行Ajax操作,因此事件不会订阅到新元素。请尝试使用命令

还有,这样可以吗?
$([p[id='les\u mp'])。单击(,function()


我不确定这个逗号。

我已经尝试在代码中使用live函数,如下所示

 $(document).ready(function() 
    { .... }
在header.php中

 <!-- http://benalman.com/projects/jquery-urlinternal-plugin/ -->
<script src='<?php bloginfo('template_directory'); ?>/js/jquery.ba-urlinternal.min.js'></script>

    <!-- http://www.asual.com/jquery/address/ -->
    <script src='<?php bloginfo('template_directory'); ?>/js/jquery.address-1.3.2.min.js'></script>

    <script>

        // Original JavaScript by Chris Coyier
        // Updated October 2010 by Stewart Heckenberg & Chris Coyier

        $(".home li.home").removeClass("home").addClass("current_page_item");
        $("#column-wrap").append("<img src='<?php bloginfo('template_directory'); ?>/images/ajax-loader.png' id='ajax-loader' />");

        $("#s").focus(function() {
            if ($(this).val() == "Search...") {
                $(this).val("");
            }
        });

        if ($(".widget_categories li").length%2 != 0) {
            $(".widget_categories ul").append("<li><a>&nbsp;</a></li>");
        }

        if ($(".widget_tag_cloud a").length%2 != 0) {
            $(".widget_tag_cloud").append("<a>&nbsp;</a>");
        }

        // The reason this JavaScript is in footer.php instead of its own file is basically the next line.
        var base             = '<?php bloginfo('url'); ?>',
            $mainContent     = $("#main-content"),
            $ajaxSpinner     = $("#ajax-loader"),
            $searchInput     = $("#s"),
            $allLinks        = $("a"),
            $el;

        $('a:urlInternal').live('click', function(e) { 

            $el = $(this);

            if ((!$el.hasClass("comment-reply-link")) && ($el.attr("id") != 'cancel-comment-reply-link')) {         
                var path = $(this).attr('href').replace(base, '');
                $.address.value(path);
                $(".current_page_item").removeClass("current_page_item");
                $allLinks.removeClass("current_link");
                $el.addClass("current_link").parent().addClass("current_page_item");
                return false;
            }

            // Default action (go to link) prevented for comment-related links (which use onclick attributes)
            e.preventDefault();

        });  

        $('#searchform').submit(function() {  
            var s = $searchInput.val();
            if (s) {
                var query = '/?s=' + s;
                $.address.value(query);  
            }
            return false;
        });  

        $.address.change(function(event) {  
            if (event.value) {
                $ajaxSpinner.fadeIn();
                $mainContent
                    .empty()
                    .load(base + event.value + ' #inside', function() {
                        $ajaxSpinner.fadeOut();
                        $mainContent.fadeIn();
                    });  
            } 

            var current = location.protocol + '//' + location.hostname + location.pathname;
            if (base + '/' != current) {
                var diff = current.replace(base);
                location = base + '/#' + diff;
            }

        });                 

    </script>

  </div>
当在main_nav.php中单击时,它仍然不起作用 当我把代码从main_nav放到header.php中时
它是有效的。

您可能希望使用下面链接中的方法将ajax内容重构到一个单独的文件中。不确定它是否有助于解决原始问题,但我已经看到在这样做之后一切都正常了
基本上,您可以将url放入正在打印的变量中,并且您的脚本可以使用wp_localize_脚本

谢谢。单击(,function()。是我尝试live函数时的遗留问题,而我尝试live函数时,该函数不起作用。@Rob,它解决了您的问题吗?您使用的是简单的。单击()或.live?它仍然不起作用。我尝试了作为.live()函数和,click()函数。目前我使用.live()函数。是否应将live函数插入$(文档).ready(函数(){usedhere}?我建议不要发布完整的网站。首先,对网站上可能出现的错误做出一个很好的假设,并说明这一点。你是对的,但我缺乏知识,这对我来说有点复杂。我认为错误在于包含php和正确使用live函数。也许页脚中使用ajax代码对这就是为什么我也包括了它。你能提供一个到你的网站的链接吗?如果你对你的问题有评论或更新,就编辑你的问题。不要用其他问题回答你的问题。
 <!-- http://benalman.com/projects/jquery-urlinternal-plugin/ -->
<script src='<?php bloginfo('template_directory'); ?>/js/jquery.ba-urlinternal.min.js'></script>

    <!-- http://www.asual.com/jquery/address/ -->
    <script src='<?php bloginfo('template_directory'); ?>/js/jquery.address-1.3.2.min.js'></script>

    <script>

        // Original JavaScript by Chris Coyier
        // Updated October 2010 by Stewart Heckenberg & Chris Coyier

        $(".home li.home").removeClass("home").addClass("current_page_item");
        $("#column-wrap").append("<img src='<?php bloginfo('template_directory'); ?>/images/ajax-loader.png' id='ajax-loader' />");

        $("#s").focus(function() {
            if ($(this).val() == "Search...") {
                $(this).val("");
            }
        });

        if ($(".widget_categories li").length%2 != 0) {
            $(".widget_categories ul").append("<li><a>&nbsp;</a></li>");
        }

        if ($(".widget_tag_cloud a").length%2 != 0) {
            $(".widget_tag_cloud").append("<a>&nbsp;</a>");
        }

        // The reason this JavaScript is in footer.php instead of its own file is basically the next line.
        var base             = '<?php bloginfo('url'); ?>',
            $mainContent     = $("#main-content"),
            $ajaxSpinner     = $("#ajax-loader"),
            $searchInput     = $("#s"),
            $allLinks        = $("a"),
            $el;

        $('a:urlInternal').live('click', function(e) { 

            $el = $(this);

            if ((!$el.hasClass("comment-reply-link")) && ($el.attr("id") != 'cancel-comment-reply-link')) {         
                var path = $(this).attr('href').replace(base, '');
                $.address.value(path);
                $(".current_page_item").removeClass("current_page_item");
                $allLinks.removeClass("current_link");
                $el.addClass("current_link").parent().addClass("current_page_item");
                return false;
            }

            // Default action (go to link) prevented for comment-related links (which use onclick attributes)
            e.preventDefault();

        });  

        $('#searchform').submit(function() {  
            var s = $searchInput.val();
            if (s) {
                var query = '/?s=' + s;
                $.address.value(query);  
            }
            return false;
        });  

        $.address.change(function(event) {  
            if (event.value) {
                $ajaxSpinner.fadeIn();
                $mainContent
                    .empty()
                    .load(base + event.value + ' #inside', function() {
                        $ajaxSpinner.fadeOut();
                        $mainContent.fadeIn();
                    });  
            } 

            var current = location.protocol + '//' + location.hostname + location.pathname;
            if (base + '/' != current) {
                var diff = current.replace(base);
                location = base + '/#' + diff;
            }

        });                 

    </script>

  </div>
$("p[id='les_mp']").live("click", function()
{
$("#main_logo").css("background-image","url(<?php bloginfo('stylesheet_directory'); ?>/images/header/les_header.png)");
$("a#nav_text").html("Gitaarles");

});
 $(document).ready(function() 
    { .... }