私はこのような構造を持っています:
<div class="post">
<div class="left">
<div class="foo"><p><a href="#" id="clickme<?php echo $num;?>">blah</a></p></div>
</div>
<div class="right">
<div class="text">blah blah blah blah</div>
</div>
<p class="date">27/12/12</p>
</div>
この構造が繰り返されるため、それぞれ#clickme
の末尾に異なる番号が付けられます
すなわち:#clickme2
など#clickme3
を使用して#clickme<?php echo $num;?>
私がやろうとしているのは、誰かがクリックし.date
たときに関連するメッセージを表示することです#clickme
#clickme
私が試してみました:
$('#clickme<?php echo $num;?>').parent().find('.date').append('<span id="msg">blah blah blah blah</span>');
動作していません。
$('#clickme<?php echo $num;?>').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
これは(一種の)動作するようですが、最初にページに追加されます.post
は、関連付けられて.date
いるものではありません。#clickme
問題ではないことに注意してください<?php echo $num;?>
。問題なく動作しています。jquery だけです。
アップデート:
私はそれを発見しました
$('#clickme<?php echo $num;?>').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
動作しますが、3番目の投稿をクリックすると正しく表示されますが、その下の投稿、つまり4番目、5番目をクリックすると、クリックに関連付けられた投稿ではなく、3番目の投稿に追加されます。
メッセージをフェードイン/フェードアウトするためのこの行もあります
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast');
遅れて最後に追加しようとし.remove()
ましたが、まったく機能しなくなりました
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast').delay(1000).remove();
完全なコード
$('#clickme<?php echo $num;?>').closest('.post').find('.date').append('<span id="msg">blah blah blah blah</span>');
$('#msg').fadeIn('fast').delay(1000).fadeOut('fast');