【发布时间】:2018-02-19 04:01:14
【问题描述】:
所以基本上每次我点击图标“.favorite i”时,它都应该向我的数组添加一个对象。如果我第一次单击它会将父 div 添加到数组中,但第二次它会删除第一个并抓取最后一个父 div。
我正在使用三个标签,分别称为“星期一”、“星期二”和“收藏夹”。我有一个切换图标,在“最喜欢的 i”开始时是一颗空心。如果我在星期一并单击该图标,则会填充空心,并将其父级克隆并添加到“#fav”选项卡中。发生这种情况时,克隆将保存到本地存储。因此,如果人们刷新页面,他们仍然可以看到他们的偏好。
当在其中一个克隆 div 中单击心脏时,特定 div 将从“#fav”中删除,并且也必须从数组和本地存储中删除。
总而言之,我需要将每个克隆的 div 保存到一个数组/本地存储中,然后在从 #fav 选项卡中删除它们时,能够从数组中删除它们中的每一个。
如何解决这个问题?非常感谢。
HTML
<div class="container">
<div class="tabs_main">
<div class="col-md-5"><a data-target="#mon" class="btn active" data-toggle="tab">Monday</a></div>
<div class="col-md-5"><a data-target="#tue" class="btn active" data-toggle="tab">Tuesday</a></div>
<div class="col-md-2"><a data-target="#fav" class="btn active" data-toggle="tab"><i class="fa fa-heart" aria-hidden="true"></i></a></div>
</div>
<div class="tab-content">
<div class="tab-pane active" id="mon">
<br>
<div class="spaces">
<div class="box-container">
<div class="box not-selected" id="box1">
<a href="#" class="favorite"><i class="fa fa-heart-o" aria-hidden="true"></i></a>
</div>
<div class="box-container">
<div class="box not-selected" id="box2">
<a href="#" class="favorite"><i class="fa fa-heart-o" aria-hidden="true"></i></a>
</div>
</div>
</div>
<div class="tab-pane" id="tue">
<br>
<div class="spaces">
</div>
</div>
<div class="tab-pane" id="fav">
<br>
</div>
</div>
</div>
JS
$('div.tab-pane').on('click', '.favorite', function(e) {
var add = $(this).parent().parent();
add.each(function(){
if ($(add.find('.not-selected .favorite i').hasClass('fa-heart'))) {
var boxContent = $(add).clone(true, true);
var showHide = $(boxContent).find(".session").addClass('selected').removeClass('not-selected');
var get = $(boxContent).wrap('<p/>').parent().html();
$(boxContent).unwrap();
var tempArray = [];
tempArray.push(get);
var myJSONString = JSON.stringify(get);
var parseString = $.parseJSON(myJSONString);
var finalString = myJSONString.replace(/\r?\\n/g, '').replace(/\\/g, '').replace(/^\[(.+)\]$/,'$1').replace (/(^")|("$)/g, '');
var final = localStorage.setItem('sessions', finalString);
$("#fav").append(tempArray);
};
});
});
【问题讨论】:
-
我不完全理解你的代码,但如果你想让
tempArray在第一次和第二次点击之间存活,你不能在函数内部声明它(因为这会产生一个新的空数组每次)。 -
请提供所有相关的HTML代码。
-
感谢所有答案,我很感激。你认为你有足够的信息来提供帮助吗? @DanPhilip
标签: javascript jquery html arrays clone