我有一个osteo.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 票数: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属性引用的是clicked元素,所以您不需要.next()方法:

$(event.currentTarget).data('type');

  ask by the_ translate from so

未解决问题?本站智能推荐: