0

この要素がいつ、どのように DOM に追加されるかを制御することはできません。しかし、それが追加されたら、jQuery 関数の呼び出しを呼び出したいと思います。私はform[data-validate]要素を一致させてから、私が書いたjQuery関数を呼び出したいと思っています:validate

私が思いついた一時的な解決策:

document.addEventListener('DOMNodeInserted', function(event) {
  if (event.target.nodeName === 'FORM' && $(event.target).data('validate')) {
    return $(event.target).validate();
  }
}, false);

https://developer.mozilla.org/en-US/docs/DOM/Mutation_eventsによると、このコードは「そのドキュメントへのさらなる DOM 変更のパフォーマンスを大幅に低下させます (1.5 倍から 7 倍遅くなります!)」とブラウザ互換性はかなり悪いです。

誰かがもっとうまくやれますか?

4

1 に答える 1

0

イベントを委任してみてください。

$(document).on('DOMNodeInserted' , 'form' , function(event){
    if (event.target.nodeName === 'FORM' && $(event.target).data('validate')) {
       return $(event.target).validate();
    }
     return false;
});

これにより、新しいフォームが作成されたときに関数が呼び出されるようになります...

于 2012-10-01T05:58:05.613 に答える