0

foreachclass.like-button1,2,3,4..で div を生成し、さらに form を生成する phpがありますform1,2,3,4..

目標は、ユーザーが「いいね」をクリックすると、div にテキスト メッセージが表示されるようにすることです。

「いいね:www.facebook.com/ferrari」

スクリプトは正しく動作しますが、 div の最初の like をクリックして 2 番目の div に移動すると、その 2 番目の div にテキスト メッセージが表示される.hoverため、関数は私が本当に望んでいるものではありません。like-button1

like-button1クラスショーテキストメッセージでdiv内のいいねをクリックし、そのdivでフォームを送信すると、スクリプトが他のdivをホバリングすることを回避せずに、適切なdivを特定する正しい方法が見つかりません。

ありがとうございます。

FB.Event.subscribe('edge.create', function (response) {

  $(".like-button1").hover(function() {                    
      $(".like-button1").text('Ti piace: ' + response);
      $("#form1").submit();
  });

  $(".like-button2").hover(function() {                    
      $(".like-button2").text('Ti piace: ' + response);
      $("#form2").submit();
  });

  $(".like-button3").hover(function() {                    
      $(".like-button3").text('Ti piace: ' + response);
      $("#form3").submit();
  });

});
4

1 に答える 1

2

data-target=""一意のクラスを使用する代わりに、これを行うことができます。送信するフォームの ID で呼び出される新しい属性を div に追加します。すなわち

< div class="like-button" data-target="form1" >< /div>

次に、JavaScript は次のようになります。

FB.Event.subscribe('edge.create', function (response) {
  var formId = $(this).attr('data-target');
  $(".like-button").text('');            
  $(this).text('Ti piace: ' + response);
  $("#"+formId).submit();

});

これにより、すべてのクラス .like-button からテキストがクリアされ、クリックされたものにテキストが追加されます。属性に渡された ID を使用してフォームを送信しdata-target=""ます。

この方法でコードを書くと、将来的に div のようなものを間違いなく追加することになるため、現在および将来的に記述するコードの量も短縮されます。

于 2013-10-03T21:18:03.013 に答える