2010-01-12 156 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(); 
     } 
    });  
    } 
}); 
真正清楚