2012-06-13 32 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

相關問題