chrome和IE 8的explicitOriginalTarget.id的替代方法

end*_*der 6 javascript jquery internet-explorer-8

我正在尝试找到一种跨浏览器兼容的方法,以挑选在具有两个不同提交按钮的表单提交过程中单击的按钮的id属性。我可以使用以下代码为FireFox完成此操作,但由于它们不支持explicitOriginalTarget,因此无法在IE 8或Chrome中运行。

   $("#postForm, #dialogPostForm, #pastPostForm").live('submit', function(event) {
     event.preventDefault();
     if (event.originalEvent.explicitOriginalTarget.id === 'pastPosts'){
     ...SNIP...
Run Code Online (Sandbox Code Playgroud)

有人可以建议使用兼容跨浏览器的方法吗?

更新我尝试使用“ 如何获取导致表单提交事件中的提交的按钮”中的答案,但我想使用.live jquery方法并使用事件对象选择原始输入的提交ID。

更新这是我试图从中获取原始提交按钮ID的表单:

<form id="postForm" action="{% url account_tracker mashup.pk %}?fuzzy=true" method="post">
    <div class="mygoal">Update Your Progress: {{ form.post }}
    <input type="submit" value="+  1" class="formbtn" style="font-size:18px;"/>
    <input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn"/>         
    <span id="result" class="results"></span>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

更新我想出了自己的解决方案。添加一个onclick属性,该属性将“名称”属性添加到表单。然后在表单处理中检查表单名称是否为“过去”,并对其进行处理,然后在表单完成处理后删除该属性。据我所知,这适用于所有浏览器。

 <input type="submit" value="This week" style="font-size:18px;" id="pastPosts" class="formbtn" onclick="$('#postForm').attr('name', 'past');" />
Run Code Online (Sandbox Code Playgroud)

Mat*_*att 0

鉴于:

<div id="parent">
    <div id="child">
        clicky
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们可以应用以下逻辑:(更新)

$('#parent').live('click', function(e){
    var target = e.originalEvent || e.originalTarget;
    console.log($(target.srcElement || target.originalTarget).attr('id'));
});
Run Code Online (Sandbox Code Playgroud)

如果我点击 child,这会在 Chrome、IE9 和 FF8 中为我提供“child”。