【发布时间】:2015-11-29 00:22:03
【问题描述】:
我有 2 个按钮 具有相同的功能,即从 API 获取数据然后转换为 html,然后使用 jQuery 将其附加到 <div>。最后,使用slick jQuery 插件将 HTML 元素显示为滑块。
但是,在单击第一个按钮后,如果我单击第二个按钮(反之亦然),slick(滑块)不再起作用。
Javascript 代码:
$(document).ready(function(){
/*
Description : Handle Day Button Event
*/
$('.dayList').on("click", function(event)
{
var dayChild = $(this).attr('id');
//::refresh day lline
$('.hour-to-hour-line').empty();
getHourList(dayChild,function()
{
/*
The Slick
*/
$('.hour-to-hour-line').slick({
dots: false,
infinite: false,
speed: 1000,
slidesToShow: 6,
slidesToScroll: 1,
focusOnSelect: true,
arrows: false,
slickSetOption: true
});
});
});
});
HTML代码:
<div id="monday" class="dayList" data-daycount = "1" tabindex="1"> Monday </div>
<div id="tuesday" class="dayList" data-daycount = "2" tabindex="2"> Tuesday </div>
<br/>
<div id="hour2" class="hour-to-hour-line"></div>
Javascript 代码,getHourList() 函数:
function getHourList(day,callback)
{
//::convert day to dayCount
var dayCount = 0;
switch(day) {
case "monday":
dayCount = 1;
break;
case "tuesday":
dayCount = 2;
break;
}
//::fetch data from API
jQuery.ajax({
type: 'GET',
url: 'http://localhost/api/1.0/schedule/items?day='+dayCount,
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Basic WS8fkn5344WN8==");
},
success: function (data)
{
//::refresh <div class='hour-to-hour-list'> template
$('.hour-to-hour-line').empty();
//data definition
var iCounter_1 = 1;
var iCounter_2 = 1;
var iCounter_2_next = 1;
var timer = [];
//::exctract time from array=>data
jQuery.each( data.item, function( key, val )
{
timer[iCounter_1] = val.time;
iCounter_1++;
});
//::exract time from array=>timer
jQuery.each( data.item, function( key, val )
{
var time = val.time;
var parent_id = "hour_"+iCounter_2;
var hour_id = "this_hour_"+iCounter_2;
var next = iCounter_2 + 1;
$html =
"<div id="+parent_id+" class='fl hour-focus'>"+
"<div id="+hour_id+" class='fl kurohige-prev jaman' data-time="+time+">"+time+"-"+timer[next]+"</div>"+
"<div class='fl line-0'></div>"+
"</div>";
$('.hour-to-hour-line').append($($html));
iCounter_2++;
});
if (callback)
{
callback();
}
}
});
}
有人对此有解决方案吗?
【问题讨论】:
-
你应该尝试使用这样的东西:
$('.hour-to-hour-line').slickRemove(0)和$('.hour-to-hour-line').slickAdd(getHourList(dayChild)); -
能不能得到
getHourList函数的内容? -
阅读文档。要销毁此插件,您必须在 kenwheeler.github.io/slick 中使用
$('.your-slider').slick('unslick');而不是$('hour-to-hour-line').unslick()(搜索 Destroy) -
嗨@MoshFeu 我试过了,萤火虫的结果是“TypeError: a[f].slick is undefined”
-
A.当您开发时,我建议使用未缩小的版本,以便您更好地理解问题。 B. 我认为你应该检查为什么你不能摧毁它。我的猜测是这与你的问题有关。
标签: javascript jquery html slider