我有一个id="original"
元素的选择器,它在点击一个名为on_click_behaviour
的函数时触发,我需要另一个选择器id="other"
来模仿/继承它的所有行为或只是点击。
如何让other
选择器继承original
中的所有功能,这样当我点击other
选择器时,它也会触发on_click_behaviour
?< / p>
// can not touch this code as it's core
$( "#original" ).click(function() {
on_click_behaviour();
});
<div id="original">close window</div>
<div id="other">close same window</div>
我正在寻找类似的东西:
$( "#other" ).inherit_behaviours_from( "#original" );
答案 0 :(得分:3)
你的条款非常糟糕。
您正在做的是使用选择器来查找元素,然后将函数绑定到与该元素交互将触发的某个事件。
您尝试做的事情是将相同的行为绑定到第二个元素。
为了将相同的处理程序添加到其他元素,您只需要选择除第一个元素之外的第二个元素。您可以通过将两个选择器添加到一起来实现,用逗号分隔:
$('#original, #other').click(function () {
behavior();
})
这将选择带有id="original"
的元素和带有id="other"
的元素,然后将相同的click
处理函数绑定到它们。
答案 1 :(得分:3)
如果您只需要使用单击&#34;原始&#34;时发生的功能。元素,它不涉及&#34;原始&#34;之间的任何变量。和#34;其他&#34;,您可以使用此解决方案。 它看起来不是很好,但它确实有效。
$( "#other" ).click(function() {
$("#original").click();
});
&#13;
答案 2 :(得分:2)
您可以使用.trigger()
来发送附加到click
的{{1}}事件,该事件调用分配给处理程序#original
事件的处理程序。
click
function on_click_behaviour() {
console.log("clicked")
}
// can not touch this code
$("#original").click(function() {
on_click_behaviour();
});
$("#other").click(function() {
$("#original").trigger("click");
});
您也可以使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="original">close window</div>
<div id="other">close same window</div>
将事件处理程序附加到#original"
DOM
元素,然后将分配给$._data()
的处理程序附加到#original
。
#other
function on_click_behaviour() {
console.log("clicked")
}
// can not touch this code
$("#original").click(function() {
on_click_behaviour();
});
var originalHandler = $._data($("#original")[0]).events.click[0].handler;
$("#other").on("click", originalHandler);