3

我在 CMS 中工作,几乎无法控制 HTML。我依靠 jQuery 来操作这个表。我的客户想要为每一行交替标题和图像。

所需的布局看起来有点像这样:

[Image][Title]
[Title][Image]
[Image][Title]
[Title][Image]

这是我正在使用的简化版本:

<tbody>
<tr class="odd">
    <td class="views-field-title"></td>
    <td class="views-field-field-services-image-fid"></td>
    <td class="views-field-value0"></td>
</tr>
<tr class="even">
    <td class="views-field-title"></td>
    <td class="views-field-field-services-image-fid"></td>
    <td class="views-field-value0"></td>
</tr>
<tr class="odd">
    <td class="views-field-title"></td>
    <td class="views-field-field-services-image-fid"></td>
    <td class="views-field-value0"></td>
</tr>
<tr class="even">
    <td class="views-field-title"></td>
    <td class="views-field-field-services-image-fid"></td>
    <td class="views-field-value0"></td>
</tr>
</tbody>

我是 jQuery 新手,一直在努力使用 .each() 函数。这是我所能得到的:

$(".views-field-title").after($(".views-field-field-services-image-fid"));
4

2 回答 2

0

您可以这样做来更改赔率的顺序,只需更改孩子的顺序

 $(function() {
        jQuery.each($(".odd"), function() { 
            $(this).children(":eq(1)").after($(this).children(":eq(0)"));
        });
    });

这是它工作的小提琴。http://jsfiddle.net/77pHb/

于 2013-02-17T19:54:47.857 回答
0

怎么样:

$("tr.odd .views-field-field-services-image-fid").after(function () {
    return $(this).prev();
});

这是发生了什么:

  • 选择器返回每个奇数表行的每个“图像”列。
  • .after函数可以带一个函数。该函数对 jQuery 对象中的每个项目执行一次。
  • 在我们传递给的函数中,我们在迭代的当前项目之后.after返回我们想要插入的元素。在我们的例子中,我们希望元素直接位于我们正在查看的元素之前(“title”元素)。我们可以使用..prev

示例:http: //jsfiddle.net/6zAN7/10/

于 2013-02-17T19:57:26.197 回答