jQuery在PHP完成之前运行
我在PHP中有一个jQuery在PHP完成之前运行,php,jquery,css,css-selectors,Php,Jquery,Css,Css Selectors,我在PHP中有一个for循环,它创建了四个div,每个都包含一个img和p字符串,如下所示: <div class="guest-tile-holder"> <img class="guest-tile" src="<?php echo($tile); ?>"> <p><span><?php echo($fn.' '.$ln); ?></span></p> &
for
循环,它创建了四个div
,每个都包含一个img
和p
字符串,如下所示:
<div class="guest-tile-holder">
<img class="guest-tile" src="<?php echo($tile); ?>">
<p><span><?php echo($fn.' '.$ln); ?></span></p>
</div>
$(document).ready(function() {
$('p:nth-child(4)').css('color', 'black');
});
我所期望的是PHP将进行预处理,如上所述创建四个div
,然后jQuery将第四个div
中的p
字符串涂成黑色。然而,实际发生的情况是jQuery似乎忽略了PHP,并为一个p
字符串上色,该字符串在我的HTML中是另外三个p
字符串
我总是相信PHP会进行预处理,因此我不明白为什么jQuery似乎在PHP完成之前运行
有人能告诉我在PHP完成后如何运行jQuery吗?索引基于同一父元素中的元素,因此如果父元素在DOM中处于同一级别,则需要将其作为目标,并在该元素上使用第n个子元素选择器,然后找到段落并更改其CSS:
$('div.guest-tile-holder:nth-child(4)').find('p').css('color', 'black');
jQuery是在PHP代码之后正确执行的,只是没有选择正确的
p
p:n子项(4)
将选择作为层次结构中第四个元素的段落。例如,第一个p
将是第三个元素,因为它前面有div
和img
。实际上,您要查找的是p:nth类型(4)
或。来宾磁贴持有者:nth子(4)
,甚至使用jQuery的自定义选择器:
$('.guest-tile-holder:eq(3) p').css('color', 'black');
(由于JavaScript数组使用基于零的索引,第4个元素有索引3。)无需使用find,您只需执行以下操作:
$('div.guest-tile-holder:nth-child(4) p').css('color', 'black');
是的,你的客户端代码在服务器端代码完成之前运行,这太酷了!问题可能是段落不是您应该瞄准的元素,父div是,因为索引将在那里be@Ryan你能告诉我如何在PHP完成之前运行jQuery吗@乔纳森·罗默——不!OP错误地解释了正在发生的事情。在你至少尝试弄清楚发生了什么之前,千万不要尝试破解某些东西。为什么不尝试将jquery放在php代码之后?@user1463541-+1整天的最佳评论,真的让我崩溃了吗?大大简化了
.find()
示例。谢谢。最后,您的解释比示例代码更重要。我想我只需要了解第n个孩子是如何工作的,然后我才开始相信它没有像我希望的那样工作。谢谢