-3

for在 PHP 中有一个循环,它创建了四个div,每个都包含一个imgp字符串,如下所示:

<div class="guest-tile-holder">             
    <img class="guest-tile" src="<?php echo($tile); ?>">
    <p><span><?php echo($fn.' '.$ln); ?></span></p>
</div>

在 jQuery 中,我想每隔四个p黑色着色一次,即只有p第四个框创建的字符串,如下所示:

$(document).ready(function() {
    $('p:nth-child(4)').css('color', 'black');
});

我期望的是 PHP 会进行预处理,如上创建四个,然后 jQuery 会将第四个中div的字符串涂成黑色。然而,实际发生的事情是 jQuery 似乎忽略了 PHP 并为我的 HTML中另外三个字符串之外的字符串着色。pdivpp

我总是被引导相信 PHP 会进行预处理,因此我不明白为什么 jQuery 在 PHP 完成之前似乎正在运行。

谁能告诉我在 PHP 完成后如何让 jQuery 运行?

4

3 回答 3

3

索引基于同一父元素中的元素,因此您需要定位父div元素,如果它们在 DOM 中处于同一级别,并nth-child在该元素上使用选择器,然后找到段落并更改它CSS:

$('div.guest-tile-holder:nth-child(4)').find('p').css('color', 'black');
于 2013-01-27T16:56:32.443 回答
1

您的 jQuery 在您的 PHP 代码之后正确执行,只是您没有选择正确的p.

p:nth-child(4)将选择层次结构中的第四个元素的段落。例如,第一个p元素是第三个元素,因为它前面是 adiv和 an img。您实际上正在寻找的是类似p:nth-of-type(4)甚至.guest-tile-holder:nth-child(4)使用 jQuery 的自定义:eq()选择器的东西:

$('.guest-tile-holder:eq(3) p').css('color', 'black');

(由于 JavaScript 数组使用从零开始的索引,因此第 4 个元素的索引为 3。)

于 2013-01-27T16:59:25.567 回答
1

无需使用 find,您可以简单地执行以下操作:

$('div.guest-tile-holder:nth-child(4) p').css('color', 'black');
于 2013-01-27T16:59:32.987 回答