0

我有一个foreach生成带有类的 div.like-button1,2,3,4..并生成更多表单的 php form1,2,3,4..

目标是当用户点击“喜欢”时,div 会显示文本消息:

“你喜欢:www.facebook.com/ferrari”

该脚本可以正常工作,但该.hover功能不是我真正想要的,因为如果您单击 div 中的第一个 likelike-button1并继续第二个 div,则文本消息会出现在第二个 div 上。

我找不到正确的方法来识别正确的 div,如果您单击带有类like-button1显示文本消息的 div 内的like 并在该 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

而不是使用唯一的类,您可以这样做:向 div 添加一个新属性,该属性data-target=""使用要提交的表单的 id 调用。IE

< 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 中的文本并将文本添加到单击的那个。data-target=""使用属性中传递的 id 提交表单。

以这种方式编写代码也将减少您现在和将来编写的代码量,因为将来您无疑会添加更多类似 div 的内容

于 2013-10-03T21:18:03.013 回答