У меня есть две «кнопки» (понравившиеся / не понравившиеся), которые на самом деле являются изображениями, прикрепленными к тегу 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?