我有一个加载类别的代码段
<?php
$filtered = array_filter($categories, function($cat) {
return $cat['name'];
});
foreach (array_slice($filtered, 0, 5) as $cat) : ?>
<li class="category">
<a id="cat_<?php echo $cat['name']?>" href="?tag=<?php echo $cat['name']?>"><?php echo $cat['name']?></a>
</li>
<?php endforeach ?>
这在JS中
$(document).ready(function(){
$('#cat_<?php $cat[0]['name'];?>').find('a').trigger('click');
});
加载类别时,我试图触发对第一个类别的点击。
我得到以下HTML作为输出:
<ul class="navigation">
<li class="category">
<a id="cat_cars" href="?tag=cars">Cars</a>
</li>
<li class="category">
<a id="cat_people" href="?tag=people">People</a>
</li>
<li class="category">
<a id="cat_animal" href="?tag=animal">Animal</a>
</li>
<li class="category">
<a id="cat_web" href="?tag=web">Web</a>
</li>
<li class="category">
<a id="cat_forum" href="?tag=forum">Forum</a>
</li>
</ul>
和JS:
$(document).ready(function(){
$('#cat_').find('a').trigger('click');
});
为什么猫名没有传递给JS函数?
编辑:数组。其中有很多名称,但我要选择5个名称
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] =>
[5] => Array
(
[freq] => 11
[name] => Cars
)
[6] =>
[7] =>
[8] =>
[9] => Array
(
[freq] => 5
[name] => People
)
[10] =>
[11] =>
[12] => Array
(
[freq] => 22
[name] => Animal
)
[13] =>
[14] => Array
(
[freq] => 6
[name] => Web
)
[15] => Array
(
[freq] => 14
[name] => Forum
)
[16] =>
...
)
答案 0 :(得分:1)
要么使用echo
来打印变量,要么使用short open标签:
编辑,如果要第一个索引,则:
<?php
$array = array_slice($filtered, 0, 5);
$test = $array[0];
?>
<?php foreach ($array as $cat) : ?>
<li class="category">
<a id="cat_<?php echo $cat['name']?>" href="?tag=<?php echo
$cat['name']?>"><?php echo $cat['name']?></a>
</li>
<?php endforeach ?>
然后:
$(document).ready(function(){
$('#cat_<?php echo $test['name'];?>').find('a').trigger('click');
});
答案 1 :(得分:1)
基于评论和以后的问题编辑,预期的过滤条件是仅保留包含freq
值大于5的子数组。为此,这里是array_filter()
语法:
代码:(Demo)
$filtered = array_filter($categories, function($row) { return $row['freq'] > 5; } );
$limited = array_slice($filtered, 0, 5);
foreach ($limited as $row) {
echo "<li class=\"category\">";
echo "<a id=\"cat_{$row['name']}\" href=\"?tag={$row['name']}\">{$row['name']}</a>";
echo "</li>";
}
您尝试将第一个子数组的name
值传递给javascript的错误失败,因为没有[0]
索引可供访问-这本应该产生注意:未定义的偏移量强>。好消息是,如果您调整了jquery选择器,甚至不需要将变量传递给js,但是稍后就可以了解更多。
要触发点击事件,请使用click()
而不是.trigger('click')
。
要通过js自动触发的onclick事件缓解无限页面加载的问题,并确保javascript具有<a>
的{{1}}元素,请进行检查以确保它还不是{{1 }}输入网址的查询字符串,然后在您的无序列表中至少要单击一个类别。
jquery选择器是click()
。这意味着查找所有具有其父类值为tag
的{{1}}标签。然后从生成的元素集合中,选择.category a
中的第一个元素。
<a>