2012-12-19 25 views
2

如何查找由.live(jQuery方法)导致事件的元素的ID?如何查找由于jQuery导致事件的元素.live

下面是一个例子:

$("form[data-f=true]").live("submit", function (evt) { 
    /* 
     If I have <input type="submit" name="Submit1" data-f="true" /> and this button is clicked, then I want to know it's Submit1 button. 
    */ 
}); 

我检查EVT及其属性/字段,但没有运气。

+7

请注意,从jQuery 1.7开始,不推荐使用'$ .live'。改用['$ .on'](http://api.jquery.com/on/)。 – Sampson

回答

4

使用此,

event.target //DOM object. 

evt.target.id //id of source element. 

sourceElement = $(evt.target.id); // will get you jQuery object 

注,在jQuery 1.7,$ .live已被弃用。改为使用$ .on。

获取导致提交的元素。

$(document).ready(function() { 
    $(document).on('submit', 'form[data-f=true]', function() { 

    var elem = $("input[type=submit][clicked=true]"); 
    alert(elem.attr('id')); 
    // DO WORK 

}); 

$("form[data-f=true] input[type=submit]").click(function() { 
    $("input[type=submit]", $(this).parents("form")).removeAttr("clicked"); 
    $(this).attr("clicked", "true"); 
}); 
+0

您可以直接将元素引用传递给'$()' - 不需要通过其ID来查找它,从而为构建新的jQuery对象的操作增加了额外的成本。 – Sampson

+0

谢谢@JonathanSampson,我正要讲述和写作,感谢您的指导。 – Adil

+0

它在IE10中不起作用。 evt.target.id返回表单,而不是我单击的按钮。任何想法如何在IE10中也做到这一点?非常感谢 – user1916202

0

在事件处理程序,this指向事件的发生

$("form[data-f=true]").live("submit", function (evt) { 
    $(this); // is the event generator. 
}); 
0

目前的元素将被应用到处理函数,所以你可以简单地使用this.id

$("form[data-f=true]").live("submit", function (evt) { 
    alert(this.id) 
}); 

你也可以询问事件本身,看看哪个元素引发了事件:

$("form[data-f=true]").live("submit", function (evt) { 
    alert(evt.target.id) 
}); 
0

submit事件是由表单本身发出的,因此.target将会是正在提交的表单。如果你想知道哪些表单内按钮最后点击,您需要绑定到从按钮冒泡的事件,如click

$("form").on("click", ":submit", function (event) { 
    console.log(event.target); // The submit button last clicked 
});​ 

从这里你可以选择提交表单,或不。此处理程序仅响应点击发生在form元素上的事件,从内部的submit按钮开始。

演示:http://jsfiddle.net/5sQZ5/1/

你可以动态地在表单中添加引用到最后点击的元素,使窗体上的submit处理程序中,你可以决定谁引发的事件:

// Tell submit buttons to update parenting forms when clicked 
$(":submit").on("click", function (event) { 
    $(this).closest("form").data("target", this); 
}); 

// When a form is submitted, find last associated submit button 
$("form").on("submit", function (event) { 
    console.log($(this).data("target")); 
}); 

演示:http://jsfiddle.net/5sQZ5/2/

相关问题