首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JQuery循环中切换div

在JQuery循环中切换div
EN

Stack Overflow用户
提问于 2014-08-12 01:22:54
回答 2查看 555关注 0票数 0

我使用Knockback.js。我有一个值列表“projects”(值来自服务器)。这些值的内容显示在<div class="hiddendivcontent">中。

代码语言:javascript
复制
<ul data-bind="foreach: projects" class="list-group">

     <li class="list-group-item" data-bind="click: function(data,event){CommunityView.showContents($data.pkey(),$data.folder(), data, event);}">
          <span style="border:0px;" class="glyphicon glyphicon-plus pull-right" data-toggle="dropdown" ></span>
          <ul class="dropdown-menu labellistdropdown" role="menu" style="min-width:200px;">
              <li>..</li>
          </ul>
          <div  class="hiddendivcontent">
              <ul data-bind= "foreach : $root.community()" class="list-group">
                   <ul data-bind = "foreach :items">
                     <li> <span data-bind="text:cname"></span></li>
                   </ul>   
              </ul>
           </div>    
    </li>  

 </ul> 

当单击"CommunityView.showContents()“时,"hiddendivcontent”将获取该值。换句话说,当方法被单击时,应该显示"hiddendivcontent“,否则它将保持隐藏状态。以下代码是我使用的Jquery代码:

代码语言:javascript
复制
showContents : function(pk,rf,data,event){
            event.preventDefault();
            $('.hiddendivcontent').toggle(); 
    }

如果我使用上面的代码,这个值就会填充到所有列表项中。我尝试了许多方法来切换div,但都不起作用。有没有人能给我提点建议?

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2014-08-12 03:34:19

尝试使用knockout visible绑定。首先,当从服务器接收到你的项目时,添加到每个项目isVisible observable:

代码语言:javascript
复制
$.get(..., function(projects){
    projects = $.map(projects, function(project) {
        project.isVisible = ko.observable(false);
        return project;
    });
    viewModel.projects = projects; // assign received projects to your view model
});

现在在您的标记中使用visible绑定,如下所示:

代码语言:javascript
复制
<div data-bind="visible: isVisible">
    <ul data-bind= "foreach : $root.community()" class="list-group">
        <ul data-bind = "foreach :items">
            <li> <span data-bind="text:cname"></span></li>
        </ul>   
    </ul>
</div> 

请注意,您不再需要hiddendivcontent类。最后一件事,在你的showContents中,如下所示:

代码语言:javascript
复制
showContents: function(name, id, data, event) {
    data.isVisible(!data.isVisible());
}

参见demo。我希望这就是你需要的。

票数 1
EN

Stack Overflow用户

发布于 2014-08-12 21:42:52

这是我对我的问题的回答。

我已经为列表添加了一些引导图标。因此,当用户单击引导图标时,应该会显示隐藏的ul(每次用户单击它时都会动态创建)。

代码语言:javascript
复制
$(".glyphicon ").click( function ( e ){ 
   e.preventDefault() // prevent default action - hash doesn't appear in url
    var target = $(e.target);
    if(target.hasClass("glyphicon-chevron-right")){
    $(e.target).toggleClass('glyphicon-chevron-right glyphicon-chevron-down');
    var $newList = $("<ul />");
        $newList.append("<ul class="+"hiddendivcontent"+">");
    for(var i = 1; i <=4; i++) {
        $newList.append("<li><span>" + "menu" + i + "</span></li>");
    }        
    $(this).closest("li").append($newList);
    }
    else if(target.hasClass("glyphicon-chevron-down")){
         $(e.target).toggleClass('glyphicon-chevron-right glyphicon-chevron-down');
        $(e.target).parent().find("ul").remove();
    }
} )

http://jsfiddle.net/usezpkj2/4/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25248926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档