运行以下代码,我希望看到相关的表单,所以我可以从中提取信息。相反,this
指向文档。
我认为它与使用实时绑定有关,是否有解决方法?
$('.form_one').add('.form_two').live('submit',function(e){
e.preventDefault();
console.log($(this));
})
答案 0 :(得分:1)
这是因为live()
是将事件处理程序委托给最高级别DOM元素的快捷方式 - document
- 这就是this
范围指向那里的原因。
作为一种解决方法,您应该使用$(e.target)
来获取引发事件的元素。
此外,live()
已被弃用,如果您使用的是jQuery 1.7 +,则应使用delegate()
或on()
。
答案 1 :(得分:0)
http://jsfiddle.net/ZBaWd/将演示如何使用on
处理程序。
<div id="container"></div>
var cont = $("#container");
// Note that I'm attaching it to container and not the forms themselves.
// Then, as an additional parameter, I provide the selector "form" so that
// `on` is only fired for "form" elements that "submit" and are children of "#container"
$("#container").on("submit", "form", function(e){
e.preventDefault();
console.log($(this));
});
$("<form>").addClass("form_one").append("<button type='submit'>Submit 1</button>").appendTo(cont);
$("<form>").addClass("form_two").append("<button type='submit'>Submit 2</button>").appendTo(cont);