我建立了一个产品滑块,每次滑动后都会更新其状态。要使用nextElementSibling / previousElementSibling查找幻灯片中上一个和下一个元素的引用。即使幻灯片是使用Ajax动态加载的,桌面上的Chrome也可以正常工作。
但是,在移动版Safari和Chrome上,我收到以下错误:
TypeError: null is not an object (evaluating 'currentProduct.dataset')
似乎一旦我到达幻灯片中使用ajax加载的元素,就不再有nextElementSibling / previousElementSibling引用了。
updateState: function (direction, xOffset, outerOffset) {
// Old current product
var currentProduct = this.state.currentProduct;
// Set new current product
if (direction === 'next') {
currentProduct = this.state.currentProduct.nextElementSibling;
} else if (direction === 'prev') {
currentProduct = this.state.currentProduct.previousElementSibling;
}
// Set new state
this.state.currentProduct = currentProduct;
this.state.prevProductUrl = currentProduct.dataset.prev;
this.state.nextProductUrl = currentProduct.dataset.next;
// Load new sibling
if (currentProduct.nextElementSibling === null) {
$.get(this.state.nextProductUrl).done( function(data) {
// Insert next product
this.insertProduct(data, 'next');
this.setContainerSize(this.productContainer.children.length);
}.bind(this));
} else if (currentProduct.previousElementSibling === null) {
$.get(this.state.prevProductUrl).done( function(data) {
// Insert next product
this.insertProduct(data, 'prev');
this.setContainerSize(this.productContainer.children.length, true);
}.bind(this));
}
// Set new xOffset
this.state.xOffset = xOffset;
// Update offset of container element
this.state.outerOffset = outerOffset;
}
使用jQuery的.next()/。prev()函数也没有帮助,并给出相同的结果。
非常感谢任何帮助!
答案 0 :(得分:0)
想出来..由于使用代理,ajax请求无法正常工作..糟糕。