2013-09-03 2 views
0

이 스크립트가 있습니다. 주제가 이미 좋아하는 경우 효과적이지만, 좋아하는 것으로 표시되지 않은 경우 사용자가 좋아한다는 것을 표시하려면 두 번 클릭해야합니다. 처음에는 어떻게 작동 시키나요? 오래된 대화에서 그것의 연속은 내가 ​​당신의 문제가이 라인까지 올 수 있다고 의심 old conversation첫 번째 클릭에서 클릭 기능이 작동하도록하려면 어떻게합니까

$(document).ready(function(){ 
    $("#like<? echo $msgID;?>").click(function(){          
     var isLike = $(this).text() === "Like", 
     url = isLike ? "status-updates/like.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>" : "status-updates/unlike.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>"; 
    $.post(url + "?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>", $(this).serialize()); 
    setTimeout(function() { 
     $("#likeDiv<? echo $msgID;?>").load('status-updates/like-count.php?status_id=<? echo $msgID;?>'); 
     $(".whoLikes<? echo $msgID;?>").load('status-updates/who-likes.php?status_id=<? echo $msgID;?>'); 
     $("#like<? echo $msgID;?>").text(isLike ? "Unlike" : "Like"); 
    }, 500);         
});  
}); 
+0

뭐죠? – andrew

+0

php 태그는 사용자가 클릭하는 각 상태의 고유 ID입니다. –

+0

이 경우 렌더링 된 코드를 보는 것이 항상 유용합니다. –

답변

1

여기에 일부 큰 도움을 먹은 :

var isLike = $(this).text() === "Like"; 
url = isLike ? "status-updates/like.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>" : "status-updates/unlike.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>"; 

또는, 비 very- 긴 스크롤 방향, 즉

var isLike = $(this).text() === "Like"; 
url = isLike ? <like URL> : <unlike URL>; 

를 텍스트가 이미 "좋아요", URL이 POST 편에있는 것은 사실 "과 같은"을 수행하는 하나 말할 때.

덧붙여 말하자면, setTimeout으로 호출하는 지연을 수행하는 더 좋은 방법이 있습니다. 이것은 실행하기 전에 post을 완료하기에 충분할 것으로 예상됩니다. POST가이 $.post의 세 번째 매개 변수를 사용하여 완료되면 대신, 당신은 단순히 코드를 실행할 수 있습니다

JQuery와 선택기에서 PHP 태그
$.post(<url>, <data>, 
     function() { 
      $("#likeDiv<? echo $msgID;?>").load('status-updates/like-count.php?status_id=<? echo $msgID;?>'); 
      $(".whoLikes<? echo $msgID;?>").load('status-updates/who-likes.php?status_id=<? echo $msgID;?>'); 
      $("#like<? echo $msgID;?>").text(isLike ? "Unlike" : "Like"); 
     } 
); 
관련 문제