如何通过事件 increment/decrement 对象 属性 值?
How to increment/decrement an objects property value with an event?
我正在尝试为 jQuery-ui 使用手风琴小部件。我正在尝试 build 的是一个可以通过轻扫循环浏览所有选项卡的功能。为了这个例子,我使用了一个点击事件,因为我有滑动 up/down 事件侦听器单独工作并且与我的问题无关。本质上,用户将滑动或单击一个区域,然后选项卡将来回循环 3 个部分。
我走在正确的轨道上还是有更好的方法来完成这个?
JS
$(function () {
$("#accordion").accordion({
collapsible: true,
active: false
});
});
$('#cycle').click(function () {
$('#accordion').accordion({
active: 0
});
function incrementAccValue(obj, val) {
obj = $('#accordion').accordion({
active: val
});
obj.active++ //stuck here..?
}
});
//How to increment an object's property value?
你走在正确的轨道上。您只需要将活动数字存储在点击功能范围之外,以便该值在下一次点击事件中可用。
像这样的东西应该可以工作:http://jsfiddle.net/30vm5y75/
var max_items = $('#accordion h3').length;
var current_item = 0;
$('#cycle').click(function () {
$('#accordion').accordion({
active: current_item
});
if (current_item < max_items-1) {
current_item = current_item + 1;
} else {
current_item = 0;
}
});
不确定这是否是您需要的,但我已经更新了您的 fiddle here。
更新的 JS:
var activeIndex = 0,
maxIndex = $("#accordion h3").length - 1;
$(function () {
$("#accordion").accordion({
collapsible: true,
active: false
});
});
$('#cycle').click(function () {
$('#accordion').accordion({
active: activeIndex
});
activeIndex = ( activeIndex == maxIndex ? 0 : activeIndex+1);
});
来自文档:
// Getter
var active = $( ".selector" ).accordion("option", "active" );
// Setter
$( ".selector" ).accordion( "option", "active", 2);
因此,您不必将当前索引存储在任何地方;只需获取活动索引,然后将活动索引设置为active + 1
或手风琴的长度减一,以较小者为准。
我正在尝试为 jQuery-ui 使用手风琴小部件。我正在尝试 build 的是一个可以通过轻扫循环浏览所有选项卡的功能。为了这个例子,我使用了一个点击事件,因为我有滑动 up/down 事件侦听器单独工作并且与我的问题无关。本质上,用户将滑动或单击一个区域,然后选项卡将来回循环 3 个部分。
我走在正确的轨道上还是有更好的方法来完成这个?
JS
$(function () {
$("#accordion").accordion({
collapsible: true,
active: false
});
});
$('#cycle').click(function () {
$('#accordion').accordion({
active: 0
});
function incrementAccValue(obj, val) {
obj = $('#accordion').accordion({
active: val
});
obj.active++ //stuck here..?
}
});
//How to increment an object's property value?
你走在正确的轨道上。您只需要将活动数字存储在点击功能范围之外,以便该值在下一次点击事件中可用。
像这样的东西应该可以工作:http://jsfiddle.net/30vm5y75/
var max_items = $('#accordion h3').length;
var current_item = 0;
$('#cycle').click(function () {
$('#accordion').accordion({
active: current_item
});
if (current_item < max_items-1) {
current_item = current_item + 1;
} else {
current_item = 0;
}
});
不确定这是否是您需要的,但我已经更新了您的 fiddle here。
更新的 JS:
var activeIndex = 0,
maxIndex = $("#accordion h3").length - 1;
$(function () {
$("#accordion").accordion({
collapsible: true,
active: false
});
});
$('#cycle').click(function () {
$('#accordion').accordion({
active: activeIndex
});
activeIndex = ( activeIndex == maxIndex ? 0 : activeIndex+1);
});
来自文档:
// Getter
var active = $( ".selector" ).accordion("option", "active" );
// Setter
$( ".selector" ).accordion( "option", "active", 2);
因此,您不必将当前索引存储在任何地方;只需获取活动索引,然后将活动索引设置为active + 1
或手风琴的长度减一,以较小者为准。