如何找到因jquery .live而导致事件的元素

时间:2012-12-19 15:23:24

标签: jquery

如何找到因.live(jQuery方法)而导致事件的元素的ID?

以下是一个例子:

$("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及其属性/字段,但没有运气。

4 个答案:

答案 0 :(得分: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");
});

答案 1 :(得分:0)

在事件处理程序中,this指向事件的生成器

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

答案 2 :(得分: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)
});

答案 3 :(得分: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/