Php 合并重复Jquery脚本
前言:我把在书堆上能找到的每一个问题都检查了一遍,但都做不到 我有一个悬停脚本,它的功能有点像一个图像库,当你在链接上悬停时,它应该隐藏兄弟图像,并显示与你悬停的链接相关的正确图像 它使用PHP获取所有数据Php 合并重复Jquery脚本,php,jquery,Php,Jquery,前言:我把在书堆上能找到的每一个问题都检查了一遍,但都做不到 我有一个悬停脚本,它的功能有点像一个图像库,当你在链接上悬停时,它应该隐藏兄弟图像,并显示与你悬停的链接相关的正确图像 它使用PHP获取所有数据 <section id="callouts" class="clearfix"> <div class="fltLeft span_1_of_2"> <h2>Popular Products</h2>
<section id="callouts" class="clearfix">
<div class="fltLeft span_1_of_2">
<h2>Popular Products</h2>
<div id="productImages">
<?php
$counter = 0;
$products = get_field('popular_products'); if($products) { foreach ($products as $product) { $counter = $counter + 1; ?>
<img class="image-<?php echo $counter; ?>" src="<?php echo $product['product_thumbnail'] ?>">
<?php }; } ?>
</div>
<?php
$counter = 0;
$products = get_field('popular_products'); if($products) { echo '<ul id="prodList">'; foreach ($products as $product) { $counter = $counter + 1; ?>
<li class="product-<?php echo $counter; ?>"><?php echo $product['product_name'] ?></li>
<?php } echo '</ul>'; } ?>
</div>
<div id="shipping" class="fltRight span_1_of_2"></div>
</section>
这是一个完全站不住脚的方法。我需要帮助重写这篇文章,如果可能的话,还需要一个很棒的解释,说明你做了什么以及为什么。非常感谢你 使用
数据-
元素保存值并泛化函数
<li class="product" data-img='image5'>Business Cards</li>
使用
data-
元素保存值并泛化函数
<li class="product" data-img='image5'>Business Cards</li>
将其转换为循环并不像看上去那么简单,因为我在事件处理程序的上下文中不再可用,所以您必须使用IIFE来创建处理程序函数,同时就地计算i。但你看:
for (var i = 1 ; i <= 7 ; i++ ) {
$('.product-'+i).hover((function (num) {
return function () {
$('.image-'+num).fadeIn("fast");
$('.image-'+num).siblings().hide();
};
})(i))
}
for(var i=1;i将其转换为循环并不像它看起来那么简单,因为我在事件处理程序的上下文中不再可用,所以您必须使用iLife在原地计算i时创建处理程序函数。但是,这样做:
for (var i = 1 ; i <= 7 ; i++ ) {
$('.product-'+i).hover((function (num) {
return function () {
$('.image-'+num).fadeIn("fast");
$('.image-'+num).siblings().hide();
};
})(i))
}
用于(var i=1;i重复之间的唯一区别是字符串中的数字后缀,您可以通过循环和'string'+i
而不是string1
,string2
等实现自动化。在任何情况下,这都应该移到。这个问题似乎与主题无关,因为我听说过循环,但是我想知道我是否需要计数器?堆栈上这类问题的许多答案都没有这个。他们只是删除它并在脚本中使用类或数据属性…这就是为什么我没有成功地找到解决方案。重复之间的唯一区别是字符串中的数字后缀,您可以忽略它使用循环和'string'+i
而不是string1
,string2
等进行自动操作。在任何情况下,这个问题都应该移到。这个问题似乎与主题无关,因为它是关于我听说过循环的,但我正在试图弄清楚我是否甚至需要计数器?关于堆栈上这类问题的许多答案都没有他的。他们只是删除它并在脚本中使用类或数据属性…这就是为什么我没有成功找到解决方案。尝试了这个,但仍然有问题。设置一个小提琴:你在图像上使用class=“image-7”,但“image1”在您的数据元素中。它们必须匹配。好的,我在更改类后也使用了此选项。谢谢!尝试了此选项,但仍然有问题。设置小提琴:您在图像上使用class=“image-7”,但“image1”在您的数据元素中。它们必须匹配。好的,我在更改类后也可以这样做。谢谢!我首先尝试了这个解决方案,因为这根本不需要我更改PHP,所以我无法让它工作。还有其他想法吗?我在上面发布了一个JSFIDLE,其中包含旧代码,但是如果您能提供帮助,请随意使用它/调整。谢谢!获得了一个我的解决方案有y个错误?在事件处理程序中尝试了alert()
ingnum
,以查看a)处理程序是否注册,b)num是否获得正确的值?因为我可能在那里犯了一个错误;)我现在正在打电话,所以现在无法对自己进行jsFiddle,抱歉。我确实收到了此错误:TypeError:$(…)。悬停(…)不是一个函数})(i);是的!就是这样。你觉得这是最有效的方法吗?这个def工作正常,比我以前使用的更干净。它显然不是最干净的方式,因为它仍然涉及到使用所有这些类——这些类通常只对样式有意义,而不是存储数据。但是,如果您不想接触PHP代码,它不会变得更短。如果你想获得最小的性能,那么就不要使用jQuery,而使用普通的JS——它可能只需要执行时间的一半,但通常只有几毫秒,我想这没什么大不了的。我首先尝试了这个解决方案,因为这根本不需要我更改PHP,而且我无法让它工作。还有其他想法吗?我在上面发布了一个带有旧代码的JSFIDLE,但是如果您能提供帮助,请随意使用它/调整。谢谢我的解决方案有错误吗?已尝试在事件处理程序中设置alert()
ingnum
,以查看a)处理程序是否已注册,b)num是否已获得正确的值因为我可能犯了个错误;)我现在正在打电话,所以我现在不可能自己打电话,对不起。我确实收到了这个错误:TypeError:$(…)。hover(…)不是函数})(I);是的!就是这样。你觉得这是最有效的方法吗?这个def工作正常,比我以前使用的更干净。它显然不是最干净的方式,因为它仍然涉及到使用所有这些类——这些类通常只对样式有意义,而不是存储数据。但是,如果您不想接触PHP代码,它不会变得更短。如果您想获得最小的性能,那么就不要使用jQuery,而是使用普通的JS——它可能只需要执行时间的一半,但通常只有几毫秒,我想这不会有多大影响。
for (var i = 1 ; i <= 7 ; i++ ) {
$('.product-'+i).hover((function (num) {
return function () {
$('.image-'+num).fadeIn("fast");
$('.image-'+num).siblings().hide();
};
})(i))
}