2012-06-13 31 views
1

,比如我有:如何做每个div都其自己的触发

<?php foreach($query as $q): ?> 
     <div class="item"> 
     <?php echo img($q->images); ?> 
     </div> 
<?php endforeach; ?> 

所以这段代码呈现在一条线上5个格,每行5个格,这代码:

<?php foreach($url->result() as $u): ?> 

<script> 
$(document).ready(function(){ 
    $('div.item').click(function(){ 

     setTimeout(function(){ 

        window.open('<?php echo $u->url; ?>'); 


     }, 500) 

    }) 
}) 
</script> 
<?php break; ?> 
<?php endforeach; ?> 

不管我们点击的是什么div,它都会打开一个带有相同url的新窗口,但是如果我的数据库中有5个不同的url,我想要点击每行的第一个div时它会打开一个窗口第一个网址,当我们点击第二个网址时,它会打开第二个网址

我认为这是可能的,通过使用类,例如class =“item1”,item2,item3,item4,item5,但如果我们只有3个url,而不是5,在这种情况下,我怎样才能使第一个三个div将打开前3个网址,但剩下的2个,将打开最后一个,这是3格

对不起,我的英语不好,也许你有一个想法,如何做到这一点,谢谢!

ps:我正在使用codeigniter

+0

经典问题。看看[这里](http://stackoverflow.com/questions/4091765/assign-click-handlers-in-for-loop/) – Jashwant

+0

只是感兴趣,你的'div'里面有什么?如果你只是插入图像,你可以做什么,只需要使用锚标签。 – Gavin

回答

3

而是一个类可以有ID喜欢ITEM_1的,item_2等每个部门和在JavaScript中,你可以在每个div中分别设置监听器。

<?php $index = 0;?> 
<?php foreach($query as $q): ?> 
     <div id="item_<?php echo $index++;?>"> 
     <?php echo img($q->images); ?> 
     </div> 
<?php endforeach; ?> 

为JavaScript代码去为:

<?php $index = 0;?> 
<?php foreach($url->result() as $u): ?> 

<script> 
$(document).ready(function(){ 
    $('#item_<?php echo $index++;?>').click(function(){ 

     setTimeout(function(){ 

       window.open('<?php echo $u->url; ?>'); 


    }, 500) 

}) 
}) 
</script> 
<?php break; ?> 
<?php endforeach; ?> 
+0

ohhh我真的会试试这个,非常感谢 – BlareStriker

1

2个选项我能想到。首先是将url添加为div的数据属性,所以data-url="url here"然后你可以使用$(this).attr('data-url')来获取javascript操作中的链接(甚至可以使用data(),但不能确定IE兼容性)。

第二个选项是有在div一个隐藏的锚,然后在JavaScript动作你可以选择点击专区内锚得到URL

相关问题