0

検討:

<ul>
    <li class="abc">one</li>
    <li class="abc">two</li>
    <li class="abc">three</li>
</ul>

<ul class="target"></ul>

次の操作を行うと、正確にはどうなりますか?

$('.target').append($('.abc'));

<li>すべての要素が最初から削除され、<ul>に挿入されると思われ'ul.target'ます。にアタッチされたイベント ハンドラ<li>は削除されますか?

4

1 に答える 1

2

http://api.jquery.com/append/

この方法で選択された要素が DOM の別の場所に挿入された場合、その要素はターゲットに移動されます (クローンは作成されません)。

おそらくnot cloned、イベント ハンドラーが転送されないことを意味します。

ただし、次のように続けます。

ただし、ターゲット要素が複数ある場合は、挿入された要素の複製されたコピーが、最初のターゲットの後に各ターゲットに対して作成されます。

つまり、ここに示すように、複数の要素があるため、イベント ハンドラーが転送されることを意味します。

http://jsbin.com/UMUHOVe/1/edit

  <h1>list one</h1>
  <ul>
    <li class="abc">one</li>
    <li class="abc">two</li>
    <li class="abc">three</li>
</ul>

  <a href="#">Transfer</a>

  <h1>list two</h1>
<ul class="target"></ul>

$(document).ready(function() {
  $(".abc").each(function() {
    $(this).click(function() {
      console.log("hi");
    });
  });
  $("a").click(function(event) {
    event.preventDefault();
$('.target').append($('.abc'));
  });
});
于 2013-11-05T20:57:21.793 に答える