【问题标题】:how to pass an array of values to $.bbq.pushState如何将值数组传递给 $.bbq.pushState
【发布时间】:2012-03-01 08:57:04
【问题描述】:
我有一个网址
http://www.example.com/
我想将一个数组传递给$.bbq.pushState
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
我如何通过$.bbq.pushState 传递这个数组
请帮忙…………
【问题讨论】:
标签:
javascript
jquery
jquery-bbq
【解决方案1】:
try this js code..
obj ={}
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
for(i=0;i<myCars.length;i++){
obj.newcars.push(myCars[i]);
}
【解决方案2】:
我遇到过这个问题,很快就使用了这两个函数,以数组的形式向片段中添加和删除信息。
function AddItemToFragment(newItem) {
var items = $.bbq.getState("itemArray");
if (!items)
items = new Array();
items.push(newItem);
$.bbq.pushState({itemArrray: items});
}
function RemoveItemFromFragment(itemToRemove) {
var items = $.bbq.getState("itemArray");
for (var i = items.length - 1; i >= 0; i--) {
if (items[i] === itemToRemove)
items.splice(i, 1);
}
$.bbq.pushState(items);
}
我对这些函数的工作方式不太满意,肯定有比创建数组对象和重写字符串更好的方法。稍后我会再看看这个,如果我有任何事情我会在这里发布。
【解决方案3】:
这就是我在 BBQ v1.2.1 中的做法,对我来说效果很好。
推送状态:
var myCars=new Array();
myCars[0]="Saab";
myCars[1]="Volvo";
myCars[2]="BMW";
$.bbq.pushState({ 'myCars': myCars });
在 hashchange 事件中获取状态:
$(window).on('hashchange', function (e) {
var myCars2 = e.getState('myCars');
}
【解决方案4】:
var checkedBoxes = {}; // new object outside of function
function toggleLayer(layer) { // layer is your key variable
var val = $('#'+layer).prop('checked'); // val is the value variable
checkedBoxes[layer] = val; // add pairs to the object
$.each( checkedBoxes, function( key, value ) { // foreach
$.bbq.pushState(checkedBoxes); // create a new parameter for each key value
});
}