我想在.buttons之外移动.details
<div class="product-actions">product 1
<div class="buttons buttons_3 group">buttons
<a class="details" title="Détails" rel="nofollow" >link</a>
</div>
</div>
<div class="product-actions">product 2
<div class="buttons buttons_3 group">buttons
<a class="details" title="Détails" rel="nofollow" >link</a>
</div>
</div>
这就是诀窍
if ($('.product-actions').length )
{
$('.product-actions').prepend("<div id='new_details_location'></div>");
$(".details").prependTo("#new_details_location");
$('.buttons_3').attr('class','buttons buttons_2 group');
}
问题是有多个产品,并且所有a.details都被移动到第一个产品div,而不是在每个div的开头都有前缀.product-actions:
http://jsfiddle.net/upKhq/2/ 任何的想法?
答案 0 :(得分:2)
试试这个FIDDLE
$('.product-actions').each(function () {
$new = $(this).prepend("<div class='new_details_location'></div>");
$(".details", $(this)).prependTo($new);
$('.buttons_3', $(this)).attr('class', 'buttons buttons_2 group');
});
你犯了一些错误:
您的选择器不是上下文相关的,并且您在id
中使用的prependTo
必须是唯一的,但您有2个具有相同ID的div。
答案 1 :(得分:2)
你的意思是这样做吗?
$('.product-actions').each(function() {
$elem = $("<div class='new_details_location'></div>");
$(this).find(".details").prependTo($elem);
$(this).prepend($elem);
});
$('.buttons_3').attr('class', 'buttons buttons_2 group');
答案 2 :(得分:0)
您可以使用每个jquery方法:
$('.product-actions').each(function() {
var self = $(this);
var new_location = $("<div id='new_details_location'></div>").prependTo(self);
self.find(".details").prependTo(new_location);
self.find('.buttons_3').attr('class','buttons buttons_2 group');
});
你不应该为两个元素使用相同的id。
答案 3 :(得分:0)
使用.each
,并使用$(this)来引用当前的.product-actions
元素。此外,你不能有多个相同的ID,只有第一个会被使用
if ($('.product-actions').length ) {
$('.product-actions').each(function() {
var newDetailLocation = $('<div></div>');
$(this).prepend(newDetailLocation);
$(".details",$(this)).prependTo(newDetailLocation);
$('.buttons_3',$(this)).attr('class','buttons buttons_2 group');
});
}