JQuery Parent от AJAX - PullRequest
       7

JQuery Parent от AJAX

0 голосов
/ 01 марта 2012

Итак, у меня есть таблица с несколькими кнопками публикации и отмены публикации.

Простые кнопки:

<button id="publish"
    <?php
        if ($singleBlog->isPublished())
            echo ' class="green small"';
        else
            echo ' class="green red small"';
    ?>
    value="<?php echo $singleBlog->getBlogId(); ?>">publish</button>

для добавления кнопок.

Затем я выполняю вызов ajaxкоторые возвращают что-то и изменяют переключатель класса и имени кнопки.Раньше он работал до того, как я добавил ajax, но я не могу заставить его работать с вызовом ajax.

Я подозреваю, что это вызвано ссылкой this в вызове ajax, и я не могу показатьсячтобы выяснить, как получить родителя этого!

Любая помощь будет оценена по этому вопросу.

<script>
      $(document).ready(function() {
          $("button#publish").click(function() {
            //alert($(this).attr("value"));
            var id = $(this).attr("value");
            $.ajax({
                type: "POST",
                url: "ajax/blogPublishUnpublish.php",
                data: "id="+ id ,
                success:function(result){
                    var button = this;
                    if (result == '0' || result == '1' ){
                        alert("in");
                        $(button).toggleClass("red");

                        if( $(this).is('.green') )
                            $(this).text('publish');

                        if( $(this).is('.red') )
                            $(this).text('unpublish');
                        alert("done");
                    }

                }
            });
            // alert(index);


      });
      });
      </script>

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

, так как мне не удалось сделать это таким образом, я немного изменил его.

моя кнопка:

<button id="publish"
                    <?php
                        if ($singleBlog->isPublished())
                            echo ' class="green small"';
                        else
                            echo ' class="red small"';
                    ?>
                    value="<?php echo $singleBlog->getBlogId(); ?>"><?php
                        if ($singleBlog->isPublished())
                            echo 'published';
                        else
                            echo 'unpublished';
                    ?></button><img id="progress<?php echo $singleBlog->getBlogId(); ?>" src="includes/images/progress.gif" style="display:none" /></td>

и м аякс

 $(document).ready(function() {
            $("button#publish").click(function() {
                var id = $(this).attr("value");
                var progress = '#'+$(this).attr('progress'+id);
                $('#progress'+id).show();
                if ($(this).text() == 'published')
                    $(this).text('unpublished');
                else
                    $(this).text('published');
                $(this).toggleClass('green');
                $(this).toggleClass('red');
                $.ajax({
                        type: "POST",
                        url: "ajax/blogPublishUnpublish.php",
                        data: "id="+ id ,
                        success:function(result){
                            if (result == -1){
                                // add X button in case if fails !
                            }
                            $('#progress'+id).hide();
                    }
                });
        });
      });

Не самое оптимальное решение, но это был единственный способ обработать несколько экземпляров на одной странице.

0 голосов
/ 01 марта 2012

Я бы снова выбрал кнопку или, если вы беспокоитесь о переключении идентификаторов, сделайте переменную.

 $(document).ready(function() {
      $("button#publish").click(function() {
        var myID = "#" + (this).attr("id");
        var id = $(this).attr("value");
        $.ajax({
            type: "POST",
            url: "ajax/blogPublishUnpublish.php",
            data: "id="+ id ,
            success:function(result){

                if (result == '0' || result == '1' ){
                    alert("in");
                    $(myID).toggleClass("red");

                    if( $(myID).is('.green') )
                        $(myID).text('publish');

                    if( $(myID).is('.red') )
                        $(myID).text('unpublish');
                    alert("done");
                }

            }
        });
        // alert(index);


  });
  });
...