一旦我将其与Wordpress合并,我的部分脚本就停止了工作

时间:2015-11-16 12:45:25

标签: jquery wordpress

我声明使用Wordpress,过去工作的脚本在网站上不再起作用。我的部分脚本效果很好,但另一部分不起作用。

我有这个,所以wordpress识别我使用的是哪个图书馆。

 var j = jQuery.noConflict();

以下是工作的一部分:(无需阅读/理解)

  j(function() {
    j('a[href*=#]:not([href=#])').click(function() {
      if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
        var target = j(this.hash);
        target = target.length ? target : j('[name=' + this.hash.slice(1) +']');
        if (target.length) {
          j('html,body').animate({
          scrollTop: target.offset().top
          }, 1000);
          return false;
         }
       }
    });
 });

然而,剧本的这部分不工作

j('nav i').click(function(){
  j('nav ul').css('top','0');
  m_nav_on = true;
});

j('nav ul li').click(function(){
  if(m_nav_on === true){
    j('nav ul').css('top','-100%');
    m_nav_on = false;
  }
});

j('#content').click(function(){
  if(m_nav_on === true){
   j('nav ul').css('top','-100%');
  m_nav_on = false;
}
}); 

两者都运行得很好,直到我在自定义wordpress主题中使用它。有谁知道这个问题?我看到,.click(function(){})部分不起作用。

1 个答案:

答案 0 :(得分:2)

第一个脚本(正在运行)包含在ready函数中... j(function(){ // stuff });。第二个脚本不包含在就绪函数中,并且正在文档的<head>中排队。这意味着您附加click处理程序的元素尚不存在。

您有两种选择:

  1. 将这些脚本排入文档的页脚
  2. click处理程序包裹在ready函数中。
  3. 选项#2的一个例子:

    j(function(){
        m_nav_on = false;  // Add a default value
    
        j('nav i').click(function(){
          j('nav ul').css('top','0');
          m_nav_on = true;
        });
    
        j('nav ul li').click(function(){
          if(m_nav_on === true){
            j('nav ul').css('top','-100%');
            m_nav_on = false;
          }
        });
    
        j('#content').click(function(){
          if(m_nav_on === true){
            j('nav ul').css('top','-100%');
            m_nav_on = false;
          }
        });
    });