2011-11-21 178 views
1

我嘗試了一些新功能,並嘗試在可以抓取之前運行。我在測試頁面中使用了一個jQuery腳本,用於檢索並顯示來自Google日曆的事件。該腳本工作得很好(因爲它是由其他人制作的!)多次使用相同的jQuery函數

我正在使用該腳本過濾掉只包含特定文本的事件,再次所有工作和這些都顯示在div內。

然後我想要在另一個div中顯示不同的過濾器結果集,我簡單地認爲我可以再次調用該函數,但是當我這樣做時,結果並不總是以正確的div結尾,有時會被添加到相同或前一個框中。每個刷新獲得不同的結果。

結果是正確的,所以飼料正在工作,所以我認爲這是文件沒有準備好或者可能延遲飼料?

任何人都可以點我正確的方向請。

代碼頁(飼料匿名):

jQuery(function ($) { 
    $.gCalReader({ 
     feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
     maxresults: 4, 
     textfilter: 'ladies', 
     targetDiv:'#ladiesEvents' 
    }); 

    $.gCalReader({ 
     feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
     maxresults: 4, 
     textfilter: 'seniors', 
     targetDiv:'#seniorEvents' 
    }); 

    $.gCalReader({ 
     feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
     maxresults: 4, 
     textfilter: 'open', 
     targetDiv:'#openEvents' 
    }); 

    $.gCalReader({ 
     feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
     maxresults: 4, 
     textfilter: 'social', 
     targetDiv:'#socialEvents' 
    }); 

    $.gCalReader({ 
     feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
     maxresults: 4, 
     textfilter: 'junior', 
     targetDiv:'#juniorEvents' 
    }); 
}); 

下面是被調用的函數:

(function ($) { 
    //Add gcal element 
    $(document).ready(function() { 
     $('body').prepend('<div id="loading">Loading...</div>'); 
    }); 

    //Resize image on ready or resize 
    $.gCalReader = function (options) { 
     //Default settings 
     var settings = { 
      //defaults?? 
      feedUri: 'https://www.google.com/calendar/feeds/[email protected]/public/full', 
      maxresults: 20, 
      displayCount: 1 
     }; 

     var feedUri = options.feedUri; 
     if (feedUri.indexOf("public/full") == -1) { 
      feedUri = settings.feedUri; 
     } 

     var options = $.extend(settings, options); 
      //properties form options are combined with settings?? 

     function _run() { 
      var calendarService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0'); 

      // The "public/full" feed is used to retrieve events from the named public calendar with full projection. 
      var query = new google.gdata.calendar.CalendarEventQuery(feedUri); 

      // Set the query with the query text 
      query.setFullTextQuery(options.textfilter); 

      query.setOrderBy('starttime'); 
      query.setSortOrder('ascending'); 
      query.setFutureEvents(true); 
      query.setSingleEvents(true); 
      query.setMaxResults(options.maxresults); 

      //alert(options.targetDiv); 

      var callback = function (result) { 

       var entries = result.feed.getEntries(); 
       //clear the loading div 
       $('#loading').html(''); 
       if (options.displayCount) { 
        $(options.targetDiv).append(entries.length + ' upcoming events'); 
       } 
       $(options.targetDiv).append('<ul id="eventlist"></ul>'); 

       for (var i = 0; i < entries.length; i++) { 
        var eventEntry = entries[i]; 
        var eventTitle = eventEntry.getTitle().getText(); 
        var startDateTime = null; 
        var eventDate = null; 
        var eventWhere = null; 
        var eventContent = eventEntry.getContent().getText(); 

        var times = eventEntry.getTimes(); 
        if (times.length > 0) { 
         startDateTime = times[0].getStartTime(); 
         eventDate = startDateTime.getDate(); 
        } 

        var d_names = new Array("Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"); 
        var m_names = new Array("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"); 

        var a_p = ""; 
        var d = eventDate; 
        var curr_hour = d.getHours(); 
        if (curr_hour < 12) { 
         a_p = "am"; 
        } 
        else { 
         a_p = "pm"; 
        } 
        if (curr_hour == 0) { 
         curr_hour = 12; 
        } 
        if (curr_hour > 12) { 
         curr_hour = curr_hour - 12; 
        } 

        var curr_min = d.getMinutes(); 
        curr_min = curr_min + ""; 

        if (curr_min.length == 1) { 
         curr_min = "0" + curr_min; 
        } 

        var time = curr_hour + ':' + curr_min + a_p; 
        var day = eventDate.getDay(); 
        var month = eventDate.getMonth(); 
        var date = eventDate.getDate(); 
        var dayname = d_names[day]; 
        var monthname = m_names[month]; 
        var location = eventEntry.getLocations(); 
        var eventWhere = location[0].getValueString(); 

        var eventhtml = '<div id="eventtitle">' + eventTitle + '</div> When: ' + dayname + ' ' + monthname + ' ' + date + ', ' + time + '<br>Where: ' + eventWhere + '<br>' + eventContent; 
        $('#eventlist').append('<li>' + eventhtml + '</li>'); 
       } 
      }; 

      // Error handler to be invoked when getEventsFeed() produces an error 
      var handleError = function (error) { 
       $('#gcal').html('<pre>' + error + '</pre>'); 
      }; 

      // Submit the request using the calendar service object 
      calendarService.getEventsFeed(query, callback, handleError); 
     } 
     google.setOnLoadCallback(_run); 

     $(window).load(function() { 

     });  //End window load 
    }; 

})(jQuery); 

感謝

更新:因爲我可以;噸答案,直到另一個7小時... 哈哈!!!!

發現問題 - 這一切都歸結爲事件列表元素的ID。

因爲現在頁面中存在多個元素實例,我假定它將所有可用的結果轉儲。

我編寫它使每一個獨特的事件列表的ID和現在的作品

尤里卡!

回答

0

發現問題 - 這一切都歸結於事件列表元素的ID。

因爲現在頁面中存在多個元素實例,我假定它將所有可用的結果轉儲。

我已經編碼它使每個事件列表的ID唯一,現在它的作品