我有一个使用范围滑块的脚本,该滑块根据滑块的位置更改价格值和人数。用途是根据人数计算办公空间的价格。以下是此笔中的工作示例:
http://codepen.io/anon/pen/OXPvZO
使用滑块时,会显示人物图标(示例中为黑色块),这些图标旨在根据计数突出显示活动类。因此,当您浏览时,活动类将应用于正确的图标数或根据幻灯片方向移除。我无法确定处理此类操作的方法。
这是我用来处理现在的JS的那个JS:
jQuery( function( $ ) {
var personCount = 12;
for ( i = 0; i < personCount; i++ ) {
$( '.person-count' ).append( '<span class="person person-' + i + '" />' );
};
$( '[data-slider]' ).on( 'slider:ready slider:changed', function( event, data ) {
$( this ).parents( '.price-slider' )
.find( '.person-integer' ).html( data.count ).end()
.find( '.js-price' ).html( data.value ).end()
.find( '.person-' + data.count ).addClass( 'is-active' );
});
});
要注意的一件事(如Codepen中的HTML中所示)是数据计数在8之后跳过两次。因此从8到10到12.这似乎抛弃了我之前尝试过的方法。
如果有人有任何我可以在这里使用的建议或方法,我将非常感激。
答案 0 :(得分:0)
它跳过的原因是因为你在数据滑块计数中缺少9和11。因为您使用循环来生成元素,所以在更改的事件中找不到具有类“.person-11”或“.person-9”的元素。
您可以根据以下代码从data-slider-count获取实际值,并使用它们生成基于data.count找到的span元素。
jQuery(function($) {
//get values from slider
var personCounts = $('.slider-input').attr('data-slider-count').split(',');
//Create span elements based on values and not count
for (i = 0; i < personCounts.length; i++) {
$('.person-count').append('<span class="person person-' + personCounts[i] + '" />');
};
//these two should be active based on the default value of the slider
$('.person-1').addClass('is-active');
$('.person-2').addClass('is-active');
$('[data-slider]').on('slider:ready slider:changed', function(event, data) {
$('.person-integer').html(data.count);
$('.js-price').html(data.value);
$('.person-' + data.count).addClass('is-active');
});
});