我想创建一种新类型的复合HTML输入。粗略喜欢这个
function create_node ()
{
let node = document.createElement ('span');
let a = document.createElement ('input');
let b = document.createElement ('input');
node.appendChild (a);
node.appendChild (b);
node.value = '';
$(a) .change (function () { /* update node.value */ });
$(b) .change (function () { /* update node.value */ });
return node;
}
我希望能够像这样编写jQuery代码:
let foo = create_node ();
$(foo).change (function () { /* use foo.value */ });
我需要在create_thing
中做些什么才能使$(foo).change(...)
正常工作,因为每次{{1}时都会调用其回调(使用正确的this
上下文) }或a
已更改?
答案 0 :(得分:0)
事实证明,因为input
节点已经有change
个事件,所以默认情况下该事件会通过父节点冒泡,所以你不必做任何事情。
如果内部节点尚未发生change
事件,您可以执行以下操作
$(internal_node) .click (function () {
// ...
$(parent_node) .change ();
});
你可以抑制像这样的默认更改事件
$(internal_node) .click (function (e) {
e .preventDefault ();
e .stopPropagation ();
});