2013-08-27 132 views
2

我有以下HTML结构。这里就是我想要做的事:将元素类复制到另一个

  1. 点击在.wrap DIV任何.edit类的任何.item,并显示.list股利。
  2. .list div中选择一个项目,在选定div内复制<i>的类别。
  3. 将复制的类添加到与.edit链接被单击相同的类中的<i>

问题:

当我在.list DIV点击项目,我能找到所选择的项目类,但我无法弄清楚如何找到类中的编辑链接被点击。

这里的HTML:

<div class="wrap"> 
    <div class="item"> 
     <div class="icon1"><i class="default"></i>Default</div> 
     <div class="edit">Change</div> 
    </div> 

    <div class="item"> 
     <div class="icon2"><i class="default"></i>Default</div> 
     <div class="edit">Change</div> 
    </div> 
</div> 

<div class="list"> 
    <ul> 
     <li> <i class="class1"></i>New 1</li> 
     <li> <i class="class2"></i>New 2</li>   
    </ul> 
</div> 

所以,在上面的例子中,当我点击“更改”,我要选择从.LIST一个项目,然后在项目复制类(例如class1),并用class .default替换。

这里是jQuery的:

$('.edit').click(function(e){ 
     $('.list').css({display: 'block'});  
}); 

$('.list ul li').click(function() { 
    $('.list ul li').removeAttr('class'); 
    $(this).addClass('selected'); 

    var new_class = $(this).children('i').attr('class'); 
    //alert(new_class); 
}); 

演示: http://jsfiddle.net/hfgsJ/

回答

2

如果我正确理解您的问题,则可以使用全局变量来保存显示列表的来源。

var source_element; 

$('.edit').click(function(e){ 
    $('.list').css({display: 'block'});  
    source_element = $(this); 
}); 

$('.list ul li').click(function() { 
    $('.list ul li').removeAttr('class'); 
    $(this).addClass('selected'); 
    new_class = $(this).children('i').attr('class'); 
    source_element.removeClass().addClass(new_class); 
}); 

http://jsfiddle.net/hfgsJ/5/

1

尝试

var $edits = $('.edit').click(function (e) { 
    $('.list').css({ 
     display: 'block' 
    }); 
    $edits.filter('.current').removeClass('current'); 
    $(this).addClass('current'); 
}); 

var $lislis = $('.list ul li').click(function() { 
    $lislis.removeClass(); 
    $(this).addClass('selected'); 

    var new_class = $(this).children('i').attr('class'); 
    $edits.filter('.current').closest('.item').find('i').removeClass().addClass(new_class) 
}); 

演示:Fiddle

1

想法是设置一个类用于向使用此类

$('.edit').click(function(e){ 
     $('.list').css({display: 'block'}); 
     $('.item').removeClass('selectedChange'); 
     $(this).parent().addClass('selectedChange'); 
     }); 
    $('.list ul li').click(function() { 
     $('.list ul li').removeAttr('class'); 
     $(this).addClass('selected'); 
     var new_class = $(this).children('i').attr('class'); 
     var toChangeItem = $('.item.selectedChange'); 
     toChangeItem.addClass(new_class); 
     alert(new_class); 
    }); 
被编辑所选择的项目然后导航到元件
相关问题