JQuery ile HTML elemanını çıkarın

1 Cevap php

Kullanıcının, bir üst hepsi tutan yaratan ve akordeon slect seçebilirsiniz mevcut konuların bir llist var siteyi ziyaret ettiğinde ben kullanıcı kendi navigasyon sistemini kuran bir sistem inşa ediyorum, bir süreç olduğunu konu içeriği, yine konuyu tıklayarak üst kaldırmak gerekir, şu anda ben bu kodu var ama çalışmıyor, herhangi biri bana rehberlik eder,

Javascript

$("a.navlink").click(function(ev) {
        var url = $(this).attr("href")
        var id = $(this).attr("id")
        ev.preventDefault();
        if(!$(this).hasClass('saved')) {
            //$("a.navlink").addClass('active')
                $.ajax ({
                    url: url,
                    type: "POST",
                    data: "method=add&id="+id,
                    success: function (html) {
                        $('#accordion').accordion('destroy');
                        $("#accordion").append(html);
                        $('#accordion').accordion({
                            //active: 0,
                            header:'h2.'+id,
                            collapsible:true
                        });
                    $("a.navlink").addClass('saved');
                    }
                });
        } else if($("a.navlink").hasClass('saved')) {
            $.ajax ({
                url: url,
                type: "POST",
                data: "method=delete",
                success: function (html) {
                    $("a.navlink").removeClass('saved');
                    //$("."+id).remove();
                }
            });    
        }
    });

Akordeon oluşturur HTML / PHP

    <?php
var_dump($_POST);
if(isset($content)) {
    foreach($category_name as $k => $v) {
        echo "<h2 class=".$this->input->post('id')."><a href='#'>$v[category_name]</a></h2>";
        echo "<div class='$v[category_name]'>";
    }
    $replace = array(".", "png", "gif", "jpg");
    $count = 0;
    foreach($content as $k=>$v) {
    $count ++;
    $image_name = str_replace($replace, "", $v['image_name']);
    echo "<a class='contentlink' href='index.php/home/get_content_abstract/$v[content_id]'>";
    echo "<img src='/media/uploads/".strtolower($v['category_name'])."/".$image_name."_thumb.png' alt='This is the picture' />";
    echo "</a>";
    }
    echo "</div>";
//die(var_dump($content));
}

if(isset($favourites_category)) {
    //die(var_dump($favourites));
    echo "<h2 class=".$this->input->post('id')."><a href='#'>$favourites_category</a></h2>";
    $count = 0;
    $replace = array(".", "png", "gif", "jpg");
    foreach ($favourites as $row) {
        $count ++;
        $image_name = str_replace($replace, "", $row['image_name']);
        echo "<div class='$favourites_category'>";
        echo "<a class='contentlink' href='index.php/home/get_content_abstract/$row[content_id]'>";
        echo "<img src='/media/uploads/".strtolower($row['category_name'])."/".$image_name."_thumb.png' alt='This is the picture' />";
        echo "<a/>";
        echo "</div>";
    }
}
?>

Temelde ben akordeon ekranda HTML silinir scrren bir akordeon sahipken kendi link basıldığında ise oluşturulur ve her akordeon tanımlamak için uzak gerekir.

1 Cevap

Çağırma işlevi ajax çağrısı farklı bir bağlam vardır. Sizin değişkenler id ve url sizin geriçağırımlarının erişilebilir değildir. Onları geri arama kullanmak için ajax çağrısı geçti, ama tepki yerine HTML json olmalıdır olabilir.

Ayrıca, $("a.navlink") yerine birkaç yerde $(this) in (ki ilk a.navlink değerlendirecek) var (gibi else if) .

İşte bazı güncellenmiş kod, ama ben yapmak için çalışıyoruz ne gerçek net değilim

$("a.navlink").click(function(ev) {
  var url = $(this).attr("href")
  var id = $(this).attr("id")
  ev.preventDefault();
  if(!$(this).hasClass('saved')) {
    //$("a.navlink").addClass('active')
    $.ajax ({
      url: url,
      type: "POST",
      data: {method: 'add', id: id},
      dataType: "json",
      success: function (response) {
        //vars url and id are not accessible here
        //so it needs to be returned from the ajax call
        $('#accordion').accordion('destroy');
        $("#accordion").append(response.html);
        $('#accordion').accordion({
          //active: 0,
          header:'h2',
          collapsible:true
        });
        $("#" + response.id).addClass('saved');
      }
    });
  } else if($(this).hasClass('saved')) {
    $.ajax ({
      url: url,
      type: "POST",
      data: {method: 'delete', id: id},
      dataType: "json",
      success: function (response) {
        $("#" + response.id).removeClass('saved');
        $("h2." + response.id).remove();
      }
    });    
  }
});