1

我有一个这样的 HTML 结构:

<tr class="v65-productDisplay-row"></tr>
<tr class="v65-productDisplay-row PriceAndButton"></tr>
<tr class="v65-productDisplay-row PhotoLine"></tr>
<tr class="v65-productDisplay-row"></tr>
<tr></tr>
<tr class="v65-productDisplay-row"></tr>
<tr class="v65-productDisplay-row PriceAndButton"></tr>
<tr class="v65-productDisplay-row PhotoLine"></tr>
<tr class="v65-productDisplay-row"></tr>
<tr></tr>
<tr class="v65-productDisplay-row"></tr>
<tr class="v65-productDisplay-row PriceAndButton"></tr>
<tr class="v65-productDisplay-row PhotoLine"></tr>
<tr class="v65-productDisplay-row"></tr>
<tr></tr>
...and so on

我试图定位每个 PriceAndButton TR 并将其插入每个相应的 PhotoLine TR 之后。这是我到目前为止的代码,但它还没有工作:

        jQuery(".PriceAndButton").each(function() {
            var IndexValue = $(this).index();
            $(this).insertAfter(".PhotoLine:eq(" + IndexValue + 1 + "");
        });

我的想法是获取每个 PriceAndButton 元素的索引值并将其插入到 PhotoLine TR 之后,其中它的 eq 等于索引值 + 1。这应该可以正常工作,因为 PhotoLine TR 总是紧随其后?

4

2 回答 2

1

您的代码(我修复了右括号):

".PhotoLine:eq(" + IndexValue + 1 + ")";

将连接为字符串。如果IndexValue等于 3,那么您将得到字符串.PhotoLine:eq(31)而不是.PhotoLine:eq(4). 你的意思是:

".PhotoLine:eq(" + (IndexValue + 1) + ")";

但即便如此,它也不会很好地工作。

为简单起见,您可以完全避免使用eq,而是选择.next('.PhotoLine')(或只是.next(),但我喜欢准确以避免意外的惊喜):

$('.PriceAndButton').each(function(i,el) {
    $(this).insertAfter($(this).next('.PhotoLine'));
});

http://jsfiddle.net/mblase75/YWaYN/

于 2013-04-02T18:21:11.687 回答
1

您可以像这样使用 jQuery next 方法

$(".PriceAndButton").each(function() {
    var self = $(this);
    self.insertAfter(self.next());
});
于 2013-04-02T18:21:43.823 回答