2016-09-05 10 views
0

新しいタイプの複合HTML入力を作成したいとします。大雑把にこのカスタムオブジェクトをjQuery change()などに変更するにはどうすればいいですか?

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 */ }); 

私はそのコールバック意志、のように、適切に$(foo).change(...)作業を行いますどのcreate_thingで行うには何がありますかaまたはbが変更された場合はいつでも呼び出すことができます(正しいthisのコンテキストで)。

+0

のように、デフォルトの変更イベントを抑えることができ、あなたは約求めていますカスタムイベント?:https://learn.jquery.com/events/introduction-to-custom-events/ – David

答えて

0

inputノードにはすでにchangeイベントがあるため、このイベントはデフォルトで親ノードを吹き飛ばすため、何もする必要はありません。内部ノードが既にchangeイベントを持っていない場合

、あなたはこの

$(internal_node) .click (function() { 
    // ... 
    $(parent_node) .change(); 
}); 

のようなものを行うことができますし、この

$(internal_node) .click (function (e) { 
    e .preventDefault(); 
    e .stopPropagation(); 
}); 
関連する問題