Backbone事件获取元素类型

时间:2014-04-19 23:00:31

标签: javascript jquery backbone.js underscore.js

我有一个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

1 个答案:

答案 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');