2

我有以下 HTML 结构。这是我正在尝试做的事情:

  1. 单击div 中 any中的任何.edit类,并显示该div。.item.wrap.list
  2. 在 div 中选择一个项目.list,复制<i>所选 div 里面的类。
  3. 将复制的类添加到与单击链接<i>相同的类中。.edit

问题:

当我单击.listdiv 中的项目时,我可以找到所选项目类,但我无法弄清楚如何找到单击编辑链接的类。

这是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)并将其替换为 .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/

4

3 回答 3

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/

于 2013-08-27T12:43:03.103 回答
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)
});

演示:小提琴

于 2013-08-27T12:40:18.043 回答
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);
    });
于 2013-08-27T13:04:05.803 回答