1

私は次のhtmlを持っています:

<? while($arr as $data) { ?>
<td> 
 <div> 
  <a href="javascript:void(0)" class="status <?= $data['SUGGESTION_CD'] ?>"> 
    <img src="images/activate.gif" />
  </a> 
 </div>
</td>

<div class="remarks <?= $data['SUGGESTION_CD'] ?>" >
 <form action="status.php">
  <textarea value=""></textarea>
  <input type="submit" /> 
  <input type="button" />
 </form>
</div>
<? } ?>

私の次のスクリプト:

<style>
    .remarks { display: none; }
</style>
<script>
  $(document).ready(function(){
      $('.status').click(function(e){
          e.preventDefault(); //to prevent default action of link tag
          $(this).parent().next('.remarks').slideToggle();
      });
});
</script>

このスクリプトでは、すべてのコメント div が非表示になっています。しかし、アンカーをクリックしても、クリックされたアンカーのすぐ下にあるコメント div は切り替わりません。そのdivの上にあるアンカーをクリックしたときに、クラスのコメントでコメントを切り替える方法。

4

5 に答える 5

1

あなたが投稿したものは、js 起動イベントを取得できない問題である少し無効なマークアップのようです。

  1. div</td>の直前にクロージングがあります。.remarks
  2. このため、作成した js イベントを取得できません。(適当に書いてますが)

あなたができることは次のとおりです。

<? while($arr as $data) { ?>
<td> 
 <div> 
  <a href="javascript:void(0)" class="status <?= $data['SUGGESTION_CD'] ?>"> 
    <img src="images/activate.gif" />
  </a> 
 </div>


<div class="remarks <?= $data['SUGGESTION_CD'] ?>" >
 <form action="status.php">
  <textarea value=""></textarea>
  <input type="submit" /> 
  <input type="button" />
 </form>
</div>
</td>  //<-----close it here
<? } ?>

その後、スクリプトは完全に正常に機能します。

于 2013-09-20T05:46:46.887 に答える