Флажок jQuery переключает все элементы div, если значение MySQL соответствует условию - PullRequest
0 голосов
/ 17 сентября 2011

Итак, у меня есть цикл, который тянет сообщения на страницу. У каждого сообщения есть пара переключателей (например, нравится / не нравится), которые при нажатии отправляют свои значения в мою базу данных. Страница настроена на получение этой информации при загрузке страницы, поэтому переключатели автоматически выбираются в свое прежнее состояние, как решил пользователь.

Теперь я хочу пару чекбоксов (основных элементов управления), которые показывают / скрывают все понравившиеся и все понравившиеся сообщения. Проблема в том, что я понятия не имею, как это сделать ... Я знаю, логика такова, что

#show_likes.click (function(){If $Mysql_value = 1  {toggle} else {ignore} });
#show_dislikes.click (function(){If $Mysql_value = 1  {toggle} else {ignore} });

Это то, что у меня уже есть:

<?php global $current_user;
get_currentuserinfo();
$userID = $current_user->ID;
?>

<div id="content">

<form name="myform" action="check.php" method="post">
    <fieldset>
        <legend>Master Controls</legend>
    <div class="left">
            <p><input id="show_likes" name="show_likes" type="checkbox" value="1" onclick="toggleLayer(this.form);" />      
    <label for="b1">Hide Likes:</label></p>
</div>
<div class="right">
    <p><input id="show_dislikes" name="show_dislikes" type="checkbox" value="1" onclick="toggleLayer(this.form);" />
    <label for="b1">Hide Disikes:</label></p>
</div>
    </fieldset>
<br><br>

   <fieldset>
        <legend>Posts</legend>

<?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);
?>

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

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

    $("input[name*='pref_<?php echo $row['contestID']; ?>']").click(function() {
        var contestID = <?php echo $row['contestID']; ?>;
        var value = $(this).val();
        var userID = <?php echo $current_user->ID; ?>;

        $.ajax({
            url: '../wp-content/themes/MC/check.php',
            type: 'POST',
            data: 'userID=' + userID + '&contestID=' + contestID + '&value=' + value,
            success: function(result) {
                $('#Message_<?php echo $row['contestID']; ?>').html('').html(result);
            }
        });
        if (value = 1) {
            $('#contest_<?php echo $row['contestID']; ?>').removeClass('dislike').addClass('like'); 
        } else if (value = 0) {
            $('#contest_<?php echo $row['contestID']; ?>').removeClass('like').addClass('dislike'); 
        }
    });

    $("input[name*='show_likes']").click(function() {
        if ($('#contest_<?php echo $row['contestID']; ?>').is('.like')) {
            $('#contest_<?php echo $row['contestID']; ?>').toggle();
        }
    });
});
</script>


<div id="contest_<?php echo $row['contestID']; ?>" class="post">
<div id="contest_<?php echo $row['contestID']; ?>_inside">
    <b><?php echo $row['Title']; ?></b><br>
    Expires: <?php echo $row['Exp']; ?><br>
    <ul id="listM"></ul>

    <form id="form_<?php echo $row['contestID']; ?>" action="/">  
        <fieldset> 
            <div class="left"><p><input id="like_<?php echo $row['contestID']; ?>" type="radio" name="pref_<?php echo $row['contestID']; ?>" value="1"<?php if ($checked['value'] == "1") echo " checked"; ?> />
            <label for="like_<?php echo $row['contestID']; ?>">Like</label></p></div>
            <div class="right"><p><input id="dislike_<?php echo $row['contestID']; ?>" type="radio" name="pref_<?php echo $row['contestID']; ?>" value="0"<? if ($checked['value'] == "0") echo " checked"; ?> />
            <label for="dislike_<?php echo $row['contestID']; ?>">Dislike</label></p></div>
                <hr />
        </fieldset>  
    </form>  
</div>
</div>
<div id="Message_<?php echo $row['contestID']; ?>"></div>

<?php 
} 
?>

</div>

Может кто-нибудь помочь мне уйти отсюда?

1 Ответ

1 голос
/ 03 октября 2011

По сути, вы хотите пометить каждый div, содержащий сообщение с классом. Например, используйте like и dislike в качестве имен классов. Таким образом, когда кто-то нажимает на вашу кнопку show_likes, вы можете вызвать функцию, которая будет скрывать все сообщения с классом dislike и показывать все сообщения с классом like. Вот так например:

$('#show_likes').click(function() {
    $('.like').show();
    $('.dislike').hide();
}

Также убедитесь, что, когда кому-то нравится или не нравится определенное сообщение, вы обновляете класс этого сообщения.

...