jquery jcarousel initcallback传递带有新值的参数

时间:2013-01-28 18:40:38

标签: jquery callback jcarousel

我正在尝试在AJAX请求中加载jcarousel中的新项目。我有一个不同的音乐曲目列表,在点击事件中我传递了曲目的ID。

<ul id="itemTrack"> // Track items
 <li><a href="#" id="p1">Track 1</a></li>
 <li><a href="#" id="p2">Track 2</a></li>
 <li><a href="#" id="p3">Track 3</a></li>
<ul>

<ul id="trackList"></ul> // carousel

$("#itemTrack a").bind("click", getSelectedTrack); // Click event bind on the track list

var theModelCarousel = null; // global variable assigned to null

function getSelectedTrack(e){
  var el = $(e.currentTarget), 
  currTrack = el.attr("id"), // Track ID
  apiurl = "ServiceLibrary/player/GetTrackList/" + currTrack;   // URL to get data
  $('#trackList').html(''); // Clear carousel list
  if (theModelCarousel != null){theModelCarousel.reset();}
  $('#trackList').jcarousel({
    vertical : true,
    scroll : 5,
    initCallback: function(carousel, state){
      if (state == 'init') {
        theModelCarousel = carousel;                
      }                 
      getListRequest(carousel, apiurl);
        }
    });
}

function getListRequest(carousel, apiurl){
        $.ajax({
        type: "GET",
        url : apiurl,
        dataType : 'jsonp',
        timeout : 8000,
        success : function(data){
            if(data){               
               // Add/Create Items HTML
            }else{

            }
        },
        error : function(err){
//          alert(err);
        }        
    });
};

在上面的代码中,如果我点击列表项,它会将id(p1)发送到'apiurl'并获取数据但是当我第一次点击另一个列表项时它会发送相同的旧ID( p1)到ajax调用,当我第二次点击时,它会发送正确的id(p2)。我可以理解它会因为initcallback而发生,但没有得到任何解决方案来清除/重置'apiurl'到新值。

1 个答案:

答案 0 :(得分:2)

您可以将reloadCallback用于其他即将发出的请求

initCallback: function(carousel, state){        
      if (state == 'init') {
        theModelCarousel = carousel;
        getListRequest(carousel, apiurl);
      }
},
reloadCallback: function(carousel){
      getListRequest(carousel, apiurl);
}