JQuery работает только половину времени - PullRequest
0 голосов
/ 25 октября 2011

У меня есть две «кнопки» (понравившиеся / не понравившиеся), которые на самом деле являются изображениями, прикрепленными к тегу href, и когда пользователь щелкает, значения отправляются в мою базу данных. #Messages отображает вывод check.php, который просто возвращает значения. Код jQuery находится внутри цикла вместе с HTML-кодом для кнопок.

Странно то, что мой код работает только для кнопки «Нравится» и только в том случае, если из моего кода удалена кнопка «Мне не нравится». Сама кнопка неприязни (например, кнопка, удаленная из кода) вообще не работает, и если обе кнопки закодированы, ни одна из них не работает.

Кроме того, #like должен отображаться перед #dislike, но на моей странице #dislike появляется слева от #like, а это не то, что должно происходить (должно отображаться справа от #like) , Есть идеи для этого?

Начать цикл:

<?php
$data = mysql_query("SELECT * FROM Contests");

while($row = mysql_fetch_array( $data )){
$query = mysql_query("SELECT * FROM userContests WHERE userID='$userID' AND contestID='$row[contestID]';") or die(mysql_error()); 
$checked = mysql_fetch_assoc($query);
?>

Мой jQuery (если я удаляю #dislike, то #like работает. Если я удаляю #like, #dislike не работает. Когда оба присутствуют, ни один не работает):

<script type="text/javascript">
$(document).ready(function() {
    var checked = <?php echo $checked['value']; ?>;
    var postID = <?php echo $row['postID']; ?>;
    var userID = <?php echo $current_user->ID; ?>;

    if (checked == 1) {
        $('#post_<?php echo $row['postID']; ?>').addClass('like'); 
    } else if (checked == 0) {
        $('#post_<?php echo $row['postID']; ?>').addClass('dislike'); 
    }

    $('#like_<?php echo $row['postID']; ?>').click(function(liked) {

        $.ajax({
            url: 'check.php',
            type: 'POST',
            data: 'userID=' + userID + '&postID=' + postID + '&value=' + '1',
            success: function(result) {
                $('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
            }
        });

        $('#post_<?php echo $row['postID']; ?>').removeClass('dislike').addClass('like');
        if (showLikes.attr('checked')) {
            $('#post_<?php echo $row['postID']; ?>').toggle();
        }
    });

    $('#dislike_<?php echo $row['postID']; ?>').click(function(disliked) {

        $.ajax({
            url: 'check.php',
            type: 'POST',
            data: 'userID=' + userID + '&postID=' + postID + '&value=' + '0',
            success: function(result) {
                $('#Message_<?php echo $row['postID']; ?>').html('').html(result).prependTo('#post_<?php echo $row['postID']; ?>');
            }

        $('#post_<?php echo $row['postID']; ?>').removeClass('like').addClass('dislike'); 
        if (showDislikes.attr('checked')) {
            $('#post_<?php echo $row['postID']; ?>').toggle();
        }
    });

Мой HTML:

<div id="post_<?php echo $row['postID']; ?>" class="post">
<div id="post_<?php echo $row['postID']; ?>_inside">
    <div>
        <a id="like_<?php echo $row['postID']; ?>" class="like" href="#"><span></span></a>
    </div>
    <div>
        <a id="dislike_<?php echo $row['postID']; ?>" class="dislike" href="#"><span></span></a>
    </div>
    <b><?php echo $row['Title']; ?></b><br>
    Expires: <?php echo $row['Exp']; ?><br>
    <ul id="listM"></ul> 
</div>
</div>
<div id="Message_<?php echo $row['postID']; ?>" class="reminder"></div>

Конец цикла:

<?php 
} 
?>

Мой CSS:

a.like {
float: right;
background: url(images/entered.png) no-repeat top center;
height: 30px;
width: 28px;
}

a.like:active {
float: right;
background: url(images/entered.png) no-repeat bottom center;
height: 30px;
width: 28px;
}

a.dislike {
float: right;
background: url(images/not-interested.png) no-repeat top center;
height: 30px;
width: 28px;
}

a.dislike:active {
float: right;
background: url(images/not-interested.png) no-repeat bottom center;
height: 30px;
width: 28px;
}

Так что же может происходить? Если #like работает без #dislike, то почему #dislike не работает без #like?

1 Ответ

0 голосов
/ 26 октября 2011

Мне удается решить проблему, вставив в переменную значение с именем value, отправленное через ajax.

Я не знаю, почему это не работает, когда жестко закодировано, но вы идете.

...