例如我有:
<?php foreach($query as $q): ?>
<div class="item">
<?php echo img($q->images); ?>
</div>
<?php endforeach; ?>
所以这段代码在一行中呈现5个div,每行5个div,以及此代码:
<?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,它都会打开一个具有相同网址的新窗口,但是如果我的数据库中有5个不同的网址,那么当我们点击每行打开的第一个div时我想要一个带有第一个网址的窗口,当我们点击第二个网址时,它会打开第二个网址
我认为这可以通过使用类来实现,例如class =“item1”,item2,item3,item4,item5,但如果我们只有3个url而不是5,那么在这种情况下如何才能使前三个div将打开前3个url,但是2个左边,将打开最后一个,它是3个div
抱歉我的英语很差,也许你知道怎么做,谢谢!ps:我正在使用codeigniter
答案 0 :(得分:3)
您可以为每个分区和javascript中的item_1,item_2等ID设置,而不是类。您可以分别在每个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; ?>
答案 1 :(得分:1)
我能想到的两个选项。首先是将网址添加为div的数据属性data-url="url here"
,然后您可以使用$(this).attr('data-url')
获取javascript操作中的链接(甚至可以使用data()
但是不确定IE兼容性。)
第二个选项是在div中有一个隐藏的锚点,然后在javascript操作中你可以选择点击的div中的锚点来获取URL