首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取触发jquery中onclick事件的元素吗?

获取触发jquery中onclick事件的元素吗?
EN

Stack Overflow用户
提问于 2011-05-20 11:12:16
回答 5查看 139.1K关注 0票数 53

我有一个表单,将submit按钮替换为输入(使用type=button),使用onclick调用现有函数:

代码语言:javascript
运行
复制
<form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post">
  <!-- some fields -->
      <input onclick="confirmSubmit();" type="button" value="Send" />
</form>

在confirmSubmit中,我希望能够动态地获取表单对象(提交它),而不是硬编码表单的id,或者作为调用confirmSubmit()的一部分传递它。我原以为我可以通过首先获得点击的dom元素(如下所示)来做到这一点:

代码语言:javascript
运行
复制
var form = $(this).parents("form");

其中$(this)是调用函数的对象(即带有onclick的输入)。但这不管用。我认为如果我用.click(function(){语法设置它,它会工作的。我能得到以不同方式调用函数的元素吗?

编辑-从下面@claudio获得答案,这里是完整的函数和调用:

代码语言:javascript
运行
复制
<form accept-charset="UTF-8" action="/admin/message_campaigns" class="new_message_campaign" id="new_message_campaign" method="post">
  <!-- some fields -->
      <input onclick="confirmSubmit($(this));" type="button" value="Send" />
</form>

以及功能本身。请注意,“jConfirm”是jquery-警报插件(http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/)的一种方法,但这与这个问题并不真正相关--关键是获取表单对象,而不是随后如何处理它:

代码语言:javascript
运行
复制
function confirmSubmit(caller) {
  var form = caller.parents("form");
  jConfirm('Are you sure?', 'Please Confirm', function(result){
    if (result) {
      form.submit();
    } else {
      return false;
    }
  });
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-20 11:14:32

您可以传递内联处理程序this关键字,获得触发事件的元素。

喜欢,

代码语言:javascript
运行
复制
onclick="confirmSubmit(this);"
票数 80
EN

Stack Overflow用户

发布于 2011-05-20 11:18:08

如果不希望通过参数将单击的on元素传递给函数,则需要访问正在发生的事件对象,并从该对象获取目标。如果像这样绑定click事件,这是最容易做到的:

代码语言:javascript
运行
复制
$('#sendButton').click(function(e){
    var SendButton = $(e.target);
    var TheForm = SendButton.parents('form');
    TheForm.submit();

    return false;
});
票数 48
EN

Stack Overflow用户

发布于 2011-05-20 11:28:50

尝尝这个

代码语言:javascript
运行
复制
<input onclick="confirmSubmit(event);" type="button" value="Send" />

还有这个

代码语言:javascript
运行
复制
function confirmSubmit(event){
            var domElement =$(event.target);
            console.log(domElement.attr('type'));
        }

我在firefox中试过,它会打印单击dom元素的“type”属性。我想您可以使用这个对象通过parents()方法获得表单。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6071095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档