1

我有以下代码将点击事件函数连接到提交按钮。我知道event.target并且this并不总是相同的(据我所知,这取决于事件附加到的位置以及实际触发它的人)但在这种情况下,事件附加到按钮并且按钮也触发了它,所以它们应该是相同。还是我错了?

 modals.init = function () {
    // wire up submit() function to the submit button
    modals.config.$submitBtn.on('click', submit);
  };

  function submit(event) {
    event.preventDefault();
    var $this = $(this);
    alert(event.target.id); // fine
    alert($this.id); // undefined
}
4

4 回答 4

5

它是$this.attr("id")(jQuery 元素)或this.id(DOM 元素)

于 2012-11-13T11:56:16.857 回答
2

是的,那么this === event.target

但是如果你把它包装成一个jQuery包装器,它就没有任何id属性了。您可以使用this.id$(this).attr('id')获取属性或$(this).prop('id')获取this.id.

于 2012-11-13T11:57:35.477 回答
1

在这种情况下,this 限定为被点击的元素,所以没有.id属性,它是被点击元素的 jQuery 表示。

于 2012-11-13T11:56:15.593 回答
1

使用代码$(this)生成一个 jquery 对象,你必须使用 jquery 函数:alert($this.attr("id));.

于 2012-11-13T11:57:22.800 回答