我有一个backbone.js应用程序,它有一个名为StoreProductView.js的视图:
var StoreProductView = Backbone.View.extend({
events: {
"click .changeProductType" : "changeProductType"
},
render: function () {
this.$el.append(render("products/product"));
},
changeProductType: function (e) {
console.debug(e.currentTarget.parentNode.next("li"));
}
});
当我致电console.debug(e.currentTarget.parentNode)
时,它会返回:
<li>
<a class='changeProductType' data-type="book">Book</a>
</li>
我试图让它从数据类型返回“book”,但是使用我当前的代码我收到了错误:
Uncaught TypeError: undefined is not a function
答案 0 :(得分:1)
DOM HTMLElement
对象没有.next()
方法,如果你想得到下一个元素,你可能试图在非jQuery对象上调用jQuery .next()
方法在原始DOM元素中,您应该阅读nextElementSibling
属性。
如果要调用jQuery .next()
方法,首先应该创建一个jQuery对象:
$(event.currentTarget).parent().next('li');
要阅读data-*
属性,您可以使用jQuery .data()
方法:
$matchedElement.find('a').data('type');
由于currentTarget
属性引用了被点击的元素,因此您不需要.next()
方法:
$(event.currentTarget).data('type');