我有一个表单,我用输入(带有type =按钮)替换了提交按钮,并带有一个调用现有函数的onclick:
<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元素来做到这一点,就像这样:
var form = $(this).parents("form");
其中$(this)是调用函数的对象,即onclick的输入。但这不起作用。如果我使用.click(function(){
语法进行设置,我认为会工作。我能以不同的方式获得调用函数的元素吗?
<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-alerts插件的一种方法(http://abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/),但这与此问题并不真正相关 - 关键是获取表单对象,而不是随后用它做的事情:
function confirmSubmit(caller) {
var form = caller.parents("form");
jConfirm('Are you sure?', 'Please Confirm', function(result){
if (result) {
form.submit();
} else {
return false;
}
});
}
答案 0 :(得分:61)
您可以传递内联处理程序this
关键字,获取触发事件的元素。
喜欢,
onclick="confirmSubmit(this);"
答案 1 :(得分:39)
如果您不想通过参数将clicked元素传递给函数,则需要访问正在发生的事件对象,并从该对象获取目标。如果你像这样绑定click事件,这是最容易做到的:
$('#sendButton').click(function(e){
var SendButton = $(e.target);
var TheForm = SendButton.parents('form');
TheForm.submit();
return false;
});
答案 2 :(得分:22)
试试这个
<input onclick="confirmSubmit(event);" type="button" value="Send" />
与此同时
function confirmSubmit(event){
var domElement =$(event.target);
console.log(domElement.attr('type'));
}
我在firefox中尝试过它,它打印了dom Element点击的'type'属性。我猜你可以使用这个对象通过parents()方法获取表单。
答案 3 :(得分:7)
这是google stackoverflow的首要问题,但所有答案都与jQuery无关!
$(".someclass").click(
function(event)
{
console.log(event, this);
}
);
&#39;事件&#39;包含两个重要的值:
event.currentTarget - 触发事件的元素(&#39; .someclass&#39;元素)
event.target - 点击了元素(如果内部&#39; .someclass&#39; [div]是其他元素并且您点击了它们)
这个 - 设置为触发元素(&#39; .someclass&#39;),但它是JavaScript元素,而不是jQuery元素,所以如果你想使用一些jQuery函数,你必须先将它改为jQuery元素: $(this)