如何找到因.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及其属性/字段,但没有运气。
答案 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") );
});