Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   clone() изменения контента (https://javascript.ru/forum/jquery/44660-clone-izmeneniya-kontenta.html)

niko42 28.01.2014 14:29

clone() изменения контента
 
Здравствуйте! Имеется, следующее:
$.installCatalog(Array({"name":"11111"}, {"name":"4444"}), Array({"id":"1"}));

<div class="installCatalog">
	<div class="title_category"></div>
</div>

$.installCatalog = function(category, product){

    if(product == ''){return false;}

    var c = $('.installCatalog').last();

    if(c.css('display') == 'none'){
        c.css({"display":"block"});
    }
    else{
        c = c.clone(true).insertAfter(c);
    }
    console.log(c);

    c.contentsd(category, product);

};

$.fn.contentsd = function(category, product){
    for(var key in category){
        this.find(".title_category").html("<span><a href=''>" + category[key].name + "</a></span>");
    }
};


Проблема заключается в следующем, когда клонирую блок и пытаюсь изменить контент в span, то почему-то он меняется на последнее значение: т.е. получается вот так:

<div class="installCatalog">
	<div class="title_category">
		<span>444444</span>
	</div>
</div>
<div class="installCatalog">
	<div class="title_category">
		<span>444444</span>
	</div>
</div>


А должно быть вот так:
<div class="installCatalog">
	<div class="title_category">
		<span>11111</span>
	</div>
</div>
<div class="installCatalog">
	<div class="title_category">
		<span>444444</span>
	</div>
</div>


Почему меняется контент во всех полях, если я явно указываю this

jsru_ 28.01.2014 14:40

this.find(".title_category") делает выборку по классу, у тебя и там и там одинаковые классы

niko42 28.01.2014 14:56

Цитата:

Сообщение от jsru_ (Сообщение 294556)
this.find(".title_category") делает выборку по классу, у тебя и там и там одинаковые классы

Тут я с Вами не соглашусь: $("div").find(".bigBlock") вернет все элементы с классом bigBlock, находящиеся внутри div-элементов.

Т.е. фактически, дай мне элеменыт, которые лежат внутри $(this).find(".title")

niko42 28.01.2014 15:34

Нашел косяк, всё дело в html() - он заменят, а не добавляет тьфууу


Часовой пояс GMT +3, время: 07:44.