我希望您能够点击父级div,但子级表单和锚元素不受点击事件影响。
点击表单元素(input、textarea、button submit)或锚标签都不起作用,因为父级点击事件正在触发。
如何使父级点击事件仅在子表单和锚标签之外的元素上生效?父级点击事件可以覆盖除这两个元素之外的任何其他子元素。
<div class="root">
<div class="parent">
<div class="container">
<a href="/blah"> Hello World</a>
<div>
<span> Hello World Again
</div>
<form class="form">
<label> inputs
<input id="text" type="text"/>
<textarea></textarea>
<input id="submit" type="submit"/>
</form>
</div>
</div>
</div>
jQuery:
$(".parent").on("click", ".container", function() {
alert("Parent clicked");
});
$(".parent").on("click", "#text", function(event) {
event.preventDefault();
alert("Form Input clicked");
});
$(".parent").on("click", "#submit", function(event) {
event.preventDefault();
alert("Form Button clicked");
});
$(".parent").on("click", "a", function(event) {
event.preventDefault();
alert("anchor link clicked");
});
点击表单元素(input、textarea、button submit)或锚标签都不起作用,因为父级点击事件正在触发。
如何使父级点击事件仅在子表单和锚标签之外的元素上生效?父级点击事件可以覆盖除这两个元素之外的任何其他子元素。
if ($(event.target).closest("#text, #submit, .container").hasClass("container")) {
(示例)。这将允许在.container
内部单击其他元素,前提是它们不是#text
或#submit
。 - T.J. Crowder