gpt4 book ai didi

jquery - 为包括当前元素在内的子元素委托(delegate)事件

转载 作者:太空狗 更新时间:2023-10-29 16:40:43 26 4
gpt4 key购买 nike

我想编写一个通用的 jQuery 代码来捕获所有 submit <form>的事件子元素包括容器元素(如果它是一个表单)

案例是:

容器是一个表单

<form>
<button>hi</button>
</form>

容器是另一个包含表单的元素

<div>
<form>
<button>submit</button>
</form>
</div>

执行此操作的最简洁的代码是什么?

我目前的解决方案如下:

function submit(e) {
// do something
}

$(containerSelectorOrjQueryObject).on("submit", "form", submit);
$(containerSelectorOrjQueryObject).on("submit", submit);

但是,我很乐意知道是否有更好的解决方案,只使用一个 on打电话。

最佳答案

您可以为此使用一个类属性来设置一个委托(delegate)来捕获任何子表单的提交事件,而不管父元素是什么。因为它是一个委托(delegate),所以它也将捕获由动态添加的元素触发的任何内容。

单表单场景、多表单div场景、动态添加表单按钮示例:

var alreadyAdded;

function submit(e) {
// do something
alert(e.target.name);
return false;
}

$("body").on("submit", ".outerContainer", submit);

$("#addAnotherDynamically").on("click", function(e) {
if (typeof(alreadyAdded) === "undefined") {
alreadyAdded = true;
$("#test2").append("<form name='form4'><button>submit 4</button></form>");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<body>
<form id="test1" name="form1" class="outerContainer">
<button>submit 1</button>
</form>

<div id="test2" class="outerContainer">
<form name="form2">
<button>submit 2</button>
</form>
<form name="form3">
<button>submit 3</button>
</form>
</div>

<br>
<button id="addAnotherDynamically">Add another form</button>
</body>

关于jquery - 为包括当前元素在内的子元素委托(delegate)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com