$(this)和event.target不同,但应该是相同的

时间:2012-11-13 11:54:02

标签: javascript jquery

我有以下代码将click事件功能连接到提交按钮。我知道event.targetthis并不总是相同(据我所知,它取决于事件所附加的位置以及实际触发事件的人)但在这种情况下,事件附加到按钮上按钮也开了它,所以它们应该是一样的。或者我错了吗?

 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 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

是的,然后是this === event.target

但如果将其包装到jQuery包装器中,则它不再具有id属性。您可以使用this.id$(this).attr('id')获取属性,也可以使用$(this).prop('id')获取this.id

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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