使用带有WordPress foreach循环的jQuery脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带有WordPress foreach循环的jQuery脚本相关的知识,希望对你有一定的参考价值。
目前,我有这个脚本:
<?php $test = get_categories('taxonomy=item&type=things');?>
<?php foreach($test as $stuff) : ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($stuff->name); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>
<?php endforeach; ?>
这是有效的,但我不知道如何从foreach
循环中取出它,以便它不会一遍又一遍地重复jQuery脚本。
总的来说,我试图通过WordPress从get_categories
中获取值,但随后从数组中传递name
值,然后在jQuery中检查是否为div中的特定元素添加了一个类。
我知道我可能会采取错误的方式,所以如果有人知道一种更好,更清洁的方法,我完全愿意接受这个建议。
答案
使用array_column()获取所有名称。未经测试的代码如下
<?php
$test = get_categories('taxonomy=item&type=things');
$names = array_column($test, 'name'); ?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($names); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>
另一答案
我喜欢尽可能地将PHP与JS分开,并防止多次迭代。所以我在PHP中处理$names
,然后json_encode
它为JS部分进行评估。下面的代码(未经测试)。
<?php
$test = get_categories('taxonomy=item&type=things');
foreach ($test as $stuff) {
$names[] = $stuff->name;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
var $things = <?php echo json_encode($names); ?>;
console.log($things);
$(".element").each(function() {
var $state = $(this).attr("title");
if ($things.indexOf($state) > -1) {
$(this).addClass('current');
}
});
});
</script>
以上是关于使用带有WordPress foreach循环的jQuery脚本的主要内容,如果未能解决你的问题,请参考以下文章
在 foreach 循环中使用媒体 ID 获取 WordPress 图像
在 foreach 循环中获取 ACF 字段数据 - wordpress
带有 BlockingCollection.GetConsumableEnumerable 的 Parallel.ForEach 循环