2010-01-12 197 views
0

我正在構建一個系統,用戶在其中建立自己的導航系統,該過程是當用戶訪問該網站時,他們可以選擇一個可用主題的列表,選擇一個頂部創建和手風琴所有話題的內容,再次點擊該主題應去掉頂部,目前我有這樣的代碼,但它不工作,任何一個可以指導我,使用jQuery從HTML中刪除元素

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(); 
       } 
      });  
     } 
    }); 

的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>"; 
    } 
} 
?> 

基本上我需要確定每個手風琴是否被創建,如果在手風琴上有手風琴時按下它的鏈接,手風琴將從屏幕上的HTML中刪除。

回答

1

回調函數與ajax調用有不同的上下文。您的回調中無法訪問您的變量idurl。您可以讓它們通過ajax調用來在回調中使用它,但響應應該是JSON而不是HTML。

此外,你必須在少數地方(如else if$("a.navlink")(這將計算爲第一a.navlink),而不是$(this)

這裏的一些更新的代碼,但我不是你正在嘗試做

$("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(); 
     } 
    });  
    } 
}); 
真正清楚