我声明使用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(){})部分不起作用。
答案 0 :(得分:2)
第一个脚本(正在运行)包含在ready
函数中... j(function(){ // stuff });
。第二个脚本不包含在就绪函数中,并且正在文档的<head>
中排队。这意味着您附加click
处理程序的元素尚不存在。
您有两种选择:
click
处理程序包裹在ready
函数中。选项#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;
}
});
});