语法错误:预期令牌“}”和WordPress

问题描述:

编辑12年3月2日:发现了另一种解决方案,工作本身,而不需要任何其他功能;请参阅下面我自己的答案。语法错误:预期令牌“}”和WordPress


我只是不明白什么是错在这里和曾与答案标题为的所有其他问题没有运气“语法错误:预期令牌‘}’”

我的工作在窗口滚动中始终可见<div class="sticky">的粘性div功能。

的jQuery 1.7.1是由WordPress和负载以下两个函数之前包括在内。根据开发工具,所有功能都会加载。

一个<div class="sticky">with various html</div>放置只是对</body>标签。

但我得到一个语法错误:预期令牌“}”的错误。

这是在标头:

$(document).ready(function(){ 
    $('.sticky').jsticky({ 
     marginTop: 0, 
    }); 

这主要功能包括其上方:

(function($){ 
    $.fn.extend({ 
     //plugin name - jsticky 
     jsticky: function(options) { 

      //Settings list and the default values 
      var defaults = { 
       marginTop: 0 
      }; 

      var options = $.extend(defaults, options); 

      return this.each(function() { 
       var o = options; 

       //Assign current element to variable, in this case is UL element 
       var obj = $(this); 


    var offset = obj.offset(); 
    var topOffset = offset.top; 
    var marginTop = obj.css("marginTop"); 
    var marginTopNum = parseInt(marginTop); 

    var diff = topOffset - marginTopNum; 


    var offset = obj.offset(); 
       var topOffset = offset.top; 
       var leftOffset = offset.left; 
       var marginTop = obj.css("marginTop"); 
       var marginLeft = obj.css("marginLeft"); 


       $(window).scroll(function() { 
        var WindowScrollTop = $(window).scrollTop(); 
        var scrollTop = WindowScrollTop + o.marginTop; 

        if (scrollTop >= topOffset){ 

         obj.css({ 
          marginTop: o.marginTop, 
          marginLeft: leftOffset, 
          position: 'fixed' 
         }); 
        } 

        if (scrollTop < topOffset){ 

         obj.css({ 
          marginTop: marginTop, 
          marginLeft: marginLeft, 
          position: 'relative' 
         }); 
        } 
       }); 


      }); 
     } 
    }); 
})(jQuery); 
+0

你如何修改你的代码?大多数(所有?)IDE和不少简单的文本编辑器(例如Notepad ++)都会显示哪些左括号与哪些右括号配对,以便您可以跟踪这种类型的错误。甚至[jsfiddle](http://jsfiddle.net)的代码编辑器都可以。 – nnnnnn 2012-03-02 00:04:39

+0

@nnnnnn:我使用BBEdit,它有语法突出显示,但它不是IDE。 – markratledge 2012-03-02 00:09:15

+0

jslint.com&jshint.com ....方便的在线语法验证程序 – charlietfl 2012-03-02 01:44:58

发现了另一种解决方案,工作本身,而不需要任何其他功能:

var name = "#sticky"; 
var menuYloc = null; 

$(document).ready(function(){ 
menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px"))) 
$(window).scroll(function() { 
offset = menuYloc+$(document).scrollTop()+"px"; 
$(name).animate({top:offset},{duration:500,queue:false}); 
}); 
}); 

该错误是完全正确的。
你从来不关外(function(){

+0

还有一个缺失的')'... – nnnnnn 2012-03-02 00:01:51

+0

@nnnnnn:这就是为什么我包括'('。 – SLaks 2012-03-02 00:04:33

+0

OK。我该如何关闭该功能? – markratledge 2012-03-02 00:06:53

您有失踪})从就绪回调:

$(document).ready(function(){ 
    $('.sticky').jsticky({ 
     marginTop: 0, 
    }); 

它应该是:

$(document).ready(function(){ 
    $('.sticky').jsticky({ 
     marginTop: 0, 
    }); 
}); 
+0

我试过了,但它会抛出一个“TypeError:'undefined'不是函数(评估'$(document)')”的错误。 – markratledge 2012-03-02 00:11:18

+0

向我们展示其余的你的头文件代码 – MacMac 2012-03-02 00:46:07

+0

除了jquery 1.7.1之外,没有其他的JS头文件,但是感谢您的帮助;我最终使用了一个不需要额外的长脚本的解决方案。 – markratledge 2012-03-02 17:58:22