これは基本的に私がアイコンをクリックするたびに.favorite私はそれを私の配列にオブジェクトを追加する必要があります。最初にクリックすると、親divが配列に追加されますが、2回目に最初のものを削除し、最後の親divを取得します。クリックするたびに配列が空であるのはなぜですか?
「月曜日」、「火曜日」、「お気に入り」という3つのタブがあります。私は開始時に空いているトグルアイコンを持っています。「お気に入り」です。私が月曜日にアイコンをクリックすると、空の心臓が塗りつぶされ、その親がクローン化され、 '#fav'タブに追加されます。これが起こると、クローンはローカルストレージに保存されます。だから、人々がページをリフレッシュする場合、彼らはまだ彼らの好みを見ることができます。
特定のdivが '#fav'から削除されたクローンされたdivのいずれかで心臓がクリックされ、配列とローカルストレージからも削除する必要があります。
結論としては、クローン化された各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);
};
});
});
フィドル:https://jsfiddle.net/itsfranhere/nbLLc3L0/44/
それが行いますので、(私は完全にあなたのコードを理解していないが、あなたは 'tempArray'は、第1および第2のクリックの間で生き残るためにしたい場合は、関数の内部でそれを宣言することはできません毎回新鮮な空の配列)。 – Thilo
関連するすべてのHTMLコードを入力してください。 –
すべてのお返事ありがとう、私はそれを感謝します。助けてくれる十分な情報があると思いますか? @DanPhilip –