我有一組元素,當我點擊我想插入它的HTML到textarea。如何將一系列點擊元素附加到textarea?
如果我這樣做,我得到了很多的元素不只是籤一個:
jQuery('body').on('change', '.masonry .item :checkbox', function() {
var urls = [];
jQuery('.masonry .item :checkbox:checked').each(function() {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
var str = '';
urls.forEach(function (url) {
str += '<div class="item"><img onerror="this.parentNode.removeChild(this);" src="' + url + '"></div>';
});
jQuery('#usp-custom-4').val(function(_, val){
return val + str;
});
});
如果我這樣做,我得到沒有任何文字到文字區域:
jQuery('#usp-custom-4').append(str);
而且如果我做這工作得很好:
jQuery('#usp-custom-4').val(str);
但隨着最後一個問題是,我有2個不同的功能與2組不同的的元素,當我點擊第一組時,它是好的,但如果我點擊第二組,它會刪除我插入的值,通過選擇第一組並插入第二組。這兩個集合必須插入他們選定的HTML到相同的文本區<textarea id="usp-custom-4"></textarea>
一個樣本jsFiddle playground,在這裏它增加,但是當我取消它不會刪除。
UPDATE
全球陣列var urls = [];
功能1:
function (data) {
jQuery.each(data.items, function(i, item) {
var uniq = uniqueId('thing_');
var $items = jQuery('<div class="item">'.concat(
'<input type="checkbox" name="', uniq, '" value="valuable" id="', uniq, '" />',
'<label for="', uniq, '">',
'<img class="img-responsive" src="' + item.link + '">',
'</label>',
'</div>'));
jQuery(".masonry").append($items);
jQuery('body').on('change', '.masonry .item :checkbox', function() {
jQuery('.masonry .item :checkbox:checked').each(function() {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
var str = '';
urls.forEach(function (url) {
str += '<div class="item"><img onerror="this.parentNode.removeChild(this);" src="' + url + '"></div>';
});
jQuery('#usp-custom-4').val(str);
});
});
});
功能2
function (data) {
jQuery.each(data.items, function(i, item) {
var uniq = uniqueId('thing_');
var $items = jQuery('<div class="item">'.concat(
'<input type="checkbox" name="', uniq, '" value="valuable" id="', uniq, '" />',
'<label for="', uniq, '">',
'<img class="img-responsive" src="' + item.link + '">',
'</label>',
'</div>'));
jQuery(".masonryB").append($items);
jQuery('body').on('change', '.masonryB :checkbox', function() {
jQuery('.masonryB :checkbox:checked').each(function() {
urls.push(jQuery(this).next('label').find('img').attr('src'));
});
console.log(urls)
var str = '';
urls.forEach(function (url) {
str += '<div class="item"><img onerror="this.parentNode.removeChild(this);" src="' + url + '"></div>';
});
jQuery('#usp-custom-4').val(str);
});
});
如果你想在僅加入該項目從textarea的移除,留下在那裏休息,請提供一個可測試的例子 –
,這將需要一個因爲代碼需要找出未選中的複選框所添加的內容,並從textarea中只刪除該字符串,所以需要做更多的工作。 – alfredo
@alfredo我正在推入已經點擊過的數組中。我相信我將不得不做的是加入2陣列,因爲我必須將功能推向2個不同的陣列,然後添加 –