2014-01-05 3 views
1

이 JS 코드는 내 웹 사이트의 일부 기사와 비슷하거나 비슷하지 않습니다. 매우 미세한 이 문제는입니다. i 클릭하면 보이지 않는 것과 달리 다시 좋아해요. 표시되지 않고 텍스트와 달라 붙는 것 같아요. 다시 클릭과 비슷합니다. 페이지를 새로 고친 후에 다시 작동합니다.
두 번 클릭해도 텍스트가 표시되지 않지만 SQL 방법을 잘

내 JS 코드클릭 후 JS가 표시되지 않습니다.

$(function(){ 

     $('.like').click(function(){ 
      var article = $(this).attr("id"); 
      var data = 'cid='+article; 
      $('.like').html('Unlike'); 
      $('.like').removeClass('like'); 
      $('.unlike').addClass('unlike'); 
      $.ajax({ 
       type: 'POST', 
       url: 'includes/like.php', 
       data: data, 
       success: function(result){ 

       } 
      }); 
     }); 


     $('.unlike').click(function(){ 
      var article = $(this).attr("id"); 
      var data = 'cid='+article; 
      $('.unlike').html('Like'); 
      $('.unlike').removeClass('unlike'); 
      $('.like').addClass('like'); 
      $.ajax({ 
       type: 'POST', 
       url: 'includes/like.php', 
       data: data, 
       success: function(result){ 

       } 
      }); 
     }); 

    }); 
+0

당신은 또한 그냥 일반적인 부모 CSTE 연구진 사용하여 위임 할 수있다. '$ (부모) .on ('클릭', '. 비슷하게', function() {'및 다른 것과 비슷 함 ... 그러나 아래에 제공된 다른 해결책은 아마도 더 좋습니다 :) – rlemon

+0

@rlemon 고맙습니다. 만약 당신이 그것을 전체 코드로 작성한다면, 나를 위해서가 아닙니다. 같은 질문을 할 다른 사용자를 위해서, 저는이 솔루션을 [나를] (http://stackoverflow.com/a/20936499/2943186)으로 가장 좋았습니다. –

답변

1

이벤트 리스너 추가하거나 이벤트 핸들러에 요소를 제거하지 않습니다 나중에 클래스를 변경, 그들이 결합되어 당시의 선택과 일치하는 요소에 부착된다.

대신

$(function() { 
    $('.like').on('click', function() { 
     var flag  = $(this).data('flag'), 
      article = this.id, 
      data  = {cid : article}; 

     $(this).html(flag ? 'Like' : 'Unlike') 
       .data('flag', !flag); 

     $.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function (result) { 

      } 
     }); 
    }); 
}); 

이 전체 코드이고 너무

$(function() { 
    $('.like').on('click', function() { 
     var flag  = $(this).data('flag'), 
      article = this.id, 
      data  = {cid : article}; 

     $(this).html(flag ? 'Like' : 'Unlike') 
       .data('flag', !flag); 

     $.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function (result) { 
       $('.total_likes').html(result); 
      } 
     }); 
    }); 
}); 

$(function() { 
    $('.removelike').on('click', function() { 
     var flag  = $(this).data('flag'), 
      article = this.id, 
      data  = {cid : article}; 

     $(this).html(flag ? 'Unlike' : 'Like') 
       .data('flag', !flag); 

     $.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function (result) { 
       $('.total_likes').html(result); 
      } 
     }); 
    }); 
}); 
+0

그것은 마치 매력처럼 작동합니다. 버튼을 클릭하면 문제가 보이지만 보이지 않습니다. 다른 버튼과 비슷합니다.
버튼을 클릭하면 좋아하는 버튼이 나타납니다.
잠시만 기다려주세요. 그것은 여기에 비디오 [비디오 설명] (http://screenr.com/a8TN) @adeneo –

+0

@YoussefSubehi - 아마 플래그 부분이 틀렸어. '$ (this) .html (flag?')로 바꾼다. ':'와 달리 ') 스왑하여 답변을 편집했습니다. – adeneo

+0

그게 환상적이야 지금은 편집하고 전체 코드를 추가합니다 –

0

아약스 콜백에서 클래스와 텍스트를 변경해야합니다! 나는 그것이 당신의 문제를 해결할 지 모르겠지만, 적어도 이것은 이런 식으로해야합니다.

$('.like').click(function(){ 
     var article = $(this).attr("id"); 
     var data = 'cid='+article; 
     $.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function(result){ 
       $('.like').html('Unlike'); 
       $('.like').removeClass('like'); 
       $('.unlike').addClass('unlike'); 
      } 
     }); 
    }); 


    $('.unlike').click(function(){ 
     var article = $(this).attr("id"); 
     var data = 'cid='+article; 
     $.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function(result){ 
       $('.unlike').html('Like'); 
       $('.unlike').removeClass('unlike'); 
       $('.like').addClass('like'); 
      } 
     }); 
    }); 
+0

고마워요.하지만 이미 시도해 봤는데 여전히 그 문제가 있습니다. 콜백 날씨에 텍스트를 업데이트하고 싶습니다. –

3

안녕 유세프 아주 잘 작동하고 당신이 시도 할 수 있습니다 자신의 토글 기능을 작성이

"좋아요"

$(function() { 

    $('.like-button').click(function(){ 
     var obj = $(this); 
     if(obj.data('liked')){ 
      obj.data('liked', false); 
      obj.html('Like'); 
     } 
     else{ 
      obj.data('liked', true); 
      obj.html('Unlike'); 
     } 
    }); 
}); 

이 코드는 작품처럼 매력
전체 코드

$(function() { 

    $('.like').click(function(){ 
      article = this.id, 
      data  = {cid : article}; 
$.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function (result) { 
       $('.total_likes').html(result); 
      } 
     }); 
     var obj = $(this); 
     if(obj.data('liked')){ 
      obj.data('liked', false); 
      obj.html('Like'); 
     } 
     else{ 
      obj.data('liked', true); 
      obj.html('Unlike'); 
     } 

    }); 
}); 


$(function() { 

    $('.removelike').click(function(){ 
      article = this.id, 
      data  = {cid : article}; 
$.ajax({ 
      type: 'POST', 
      url: 'includes/like.php', 
      data: data, 
      success: function (result) { 
       $('.total_likes').html(result); 
      } 
     }); 
     var obj = $(this); 
     if(obj.data('unliked')){ 
      obj.data('unliked', false); 
      obj.html('UnLike'); 
     } 
     else{ 
      obj.data('unliked', true); 
      obj.html('Like'); 
     } 

    }); 
}); 
+0

고마워요 당신은 부적처럼 노력했습니다 나는 그것을 편집하고 전체 코드를 추가합니다 –

+0

당신이 가장 환영합니다 Logged –