将<ul>实例替换为另一个实例

时间:2015-10-14 20:01:13

标签: jquery css replace html-lists

我在<ul>个元素中设置数据,以显示点击状态时的数据。默认情况下,Id喜欢有3列说“选择状态”,当用户点击给定状态时,数据会显示出来。正在发挥作用的一个问题是尝试将<ul>类替换为另一个<ul>而不更改所有3个?我附上了一个JSFiddle,你可以更清楚地看到我想要做的事情。我想单击一个状态,并使<ul>的内容填充其中一个默认列。出于显而易见的原因,<ul>是一个类,它会更改该类的所有实例,但我想知道是否有办法改变1个实例?

http://jsfiddle.net/5xyrv1w1/

1 个答案:

答案 0 :(得分:0)

这里看看这个小提琴:http://jsfiddle.net/5xyrv1w1/2/

除了你的文字,我已删除了你的专栏中的所有内容。我已将数据包装在div中。现在我可以从一个div获取html并将其作为另一个div的html。带有数据的隐藏div仍然存在。我只是用它们来填充一个空的'选择一个州'div。

HTML:

<button class="NY">New York</button>
<button class="GA">Georgia</button>
<button class="FL">Florida</button>


            <div id="state-columns-container">
                <div class="pick-a-state-column" data-value="Choose a state">
                    Choose a state
                </div>

                <div class="pick-a-state-column" data-value="Choose a state">
                    Choose a state
                </div>

                <div class="pick-a-state-column" data-value="Choose a state">
                    Choose a state
                </div>


                <div id="NY" class="state-data">
                    <ul id="NY-state-column" data-value="newyork">
                        <li class="state-title-chosen univers-bold">
                            <span class="close-state">X</span>New York
                        </li>
                        <li>Some data</li>
                        <li>More data</li>
                        <li>A bit more</li>
                        <li>Last data</li>
                    </ul>
                </div>

                <div id="GA" class="state-data">
                    <ul id="GA-state-column" data-value="georgia">
                        <li class="state-title-chosen univers-bold">
                            <span class="close-state">X</span>Georgia
                        </li>
                        <li>Some data</li>
                        <li>More data</li>
                        <li>A bit more</li>
                        <li>Last data</li>
                    </ul>
                </div>

                <div id="FL" class="state-data">
                    <ul id="FL-state-column" data-value="florida">
                        <li class="state-title-chosen univers-bold">
                            <span class="close-state">X</span>Florida
                        </li>
                        <li>Some data</li>
                        <li>More data</li>
                        <li>A bit more</li>
                        <li>Last data</li>
                    </ul>
                </div>
            </div>

CSS:

ul {
    list-style-type: none;
}
#state-columns-container { 
    padding: 30px;    
}

.pick-a-state-column {
  width: 200px;
  float: left;
  text-align: center;
}

.pick-a-state-column ul { position: relative; }

.close-state {
  position: absolute;
  top: 7px;
  right: 7px;;
  cursor: pointer;
}

.state-data { display: none; }

jQuery的:

$(function(){
    $('button').click(function() {
        var $className = $(this).attr('class');
        var emptyCol = $('.pick-a-state-column').not('.filled')[0];
        if(emptyCol){
            $(emptyCol).html($('#' + $className).html());
            $(emptyCol).addClass('filled');
        }
    });

    $(document).on('click', '.close-state', function() {
        var $col = $(this).closest('.pick-a-state-column');
        $col.html($col.data('value'));
        $col.removeClass('filled');
    });
});