2

如何找到由于 .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

4 回答 4

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");
});
于 2012-12-19T15:24:24.883 回答
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/

于 2012-12-19T16:01:59.943 回答
0

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

$("form[data-f=true]").live("submit", function (evt) {
    $(this); // is the event generator.
});
于 2012-12-19T15:24:40.173 回答
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)
});
于 2012-12-19T15:28:14.443 回答