0

クリックすると外側のdivが削除されるdivが内部にあるdivがあります。これを実現するjQueryは

275 $(document).on('click','.rightMenuDelete', function(event) {
276   $(this).parents('.cell').  
277   fadeOut(300, function()  {
278     $(this).remove();});
279  });

276 の this キーワードは、クリックした内部 div です。277 までに、ラップされたセットには、削除したい外側の div があります。しかし、外側の div を削除する前にフェードアウトしたいので、277 で fadeOut を適用してから、コールバックで外側の div を削除します。少し驚いたのは、278 が機能することです。278 の this キーワードは、必要に応じて外側の div であり、最初にクリックした内側の div ではありません。コントロールが jQuery チェーンを下に移動するときに this キーワードがどのように変化するかについて、誰かが光を当てることができますか?

ありがとう

4

5 に答える 5

3

が指す要素はthis、 が実行されると、276 行目自体で変更parents('.cell')されます。innerdiv ではなく、 class を持つ親のリストを指しcellます。

その後、親のコレクションをループする fadeOut を実行します。ループ内でthisは、現在の親がループされていることを示します。

于 2013-05-03T17:22:49.597 に答える
1

thisここで呼び出し.fadeOutているため、古い への参照を保持してください.parents('.cell')

于 2013-05-03T17:20:26.840 に答える
0

thisin Javascript は、それが含まれる関数に基づいてスコープされます。コールバックに渡して呼び出す変数を作成します.remove

$(document).on('click','.rightMenuDelete', function(event) {
    var par = $(this).parents('.cell');
    par.fadeout(300, function() {$(par).remove();});
  });

動作するはずです。

于 2013-05-03T17:21:38.810 に答える