2012-03-01 110 views
0

編輯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

回答

0

發現了另一種解決方案,工作本身,而不需要任何其他功能:

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}); 
}); 
}); 
0

該錯誤是完全正確的。
你從來不關外(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

1

您有失蹤})從就緒回調:

$(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

相關問題