2011-02-01 52 views
0

我有一组ID的通可变进选择在foreach循环

<?php foreach ($_Collection as $_item): ?> 
    <img class="<?php echo $_product->getId() ?>" src="<?php echo Mage::helper('catalog/image')->init($_product, 'small_image')->resize(100, 75); ?>" /> 

我希望能够通过使用,因为它会产生类抢阿贾克斯特定的div在这个和目标文件中都匹配。所以,我希望能尝试在同一个foreach循环是这样的:

$(document).ready(function() { 
var item = "<?php echo $_product->getId() ?>"; 
$('img .'+item).click(function(){ 
$('#result').load('ajax-page .'+item+') 
    }) 

这只是一个例子,但我相信有许多东西是错误的。对于一个什么是印刷的样子......

var item = "156294"; 
$j('img .'+item).click(function(){ 
    $j('#result').load('ajax-page .item') 
    }); 

对于初学者来说...我怎样才能通过项目变量选择从这个循环中?

回答

0

你必须在最后一个流浪加和报价代码中的“项目”后出现。

0

这个想法看起来不错。但有几点需要指出:

  • 你不能用一个数字例如“.156294”in $ j('img。'+ item)可能会先追加一个字母

  • 你想用load('ajax-page .item')实现什么?也许这应该是负载(“Ajax的网页?ID =” +项目)

+0

谢谢塞巴斯蒂安..与.load你可以抓住一个选择性的元素,所以我想抓住只有div类与类名称=项目 – Zac 2011-02-01 01:07:49

1

我建议改变你的php脚本来添加一个类到你的img文件,然后使用你的img的名字作为你的物品id。 所以,与其

<img class="<?php echo $_product->getId() ?>" src="<?php echo Mage::helper('catalog/image')->init($_product, 'small_image')->resize(100, 75); ?>" /> 

您将有类似的东西

<img name="<?php echo $_product->getId() ?>" class="imgBlah" src="<?php echo Mage::helper('catalog/image')->init($_product, 'small_image')->resize(100, 75); ?>" /> 

然后,使用jQuery click事件附加到任何图像与类的imgBlah“。使用您提供的脚本,它看起来像这样:

$(document).ready(function() { 

    $('img.imgBlah').click(function() { 
     $('#result').load('ajax-page .' + $(this).attr("name")) 
    }); 

}) 
0

您最好的选择是使用图像标签上的“数据选项”属性。 创建自定义名称/属性/附加字母是件很麻烦的事情。 数据选项属性被自动分析(通过Jquery> 1.4.3)到该元素的.data()json中。您以后可以使用jquery data()方法轻松访问信息。它还为您提供了存储各种数据的选项,而无需稍后进行后期处理。

例如,

<img src='blah.png' data-role="page" data-hidden="true" data-options="{id:1234}"> 

你可以在你的例子在你的PHP循环

$("img").data('options').id; 

因此,使用此选择以后检索数据时,你写出来的图像

<?php foreach ($_Collection as $_item): ?> 
    <img class="clickme" data-options="{id:<?php echo $_product->getId() ?>}" src="<?php echo Mage::helper('catalog/image')->init($_product, 'small_image')->resize(100, 75); ?>" /> 

您jQuery将不是这个样子 - (你不需要在php中生成任何东西):

$(document).ready(function() { 
//this binds a click to all images with clickme class 
$('.clickme').click(function(){ 
//this gets the id stored for that image 
item = $(this).data('options').id 
//and this does whatever with that id 
$('#result').load('ajax-page.'+item) 
    }) 

更多关于jquery的数据在这里http://api.jquery.com/data/