如何为每个div做自己的触发器

时间:2012-06-13 12:27:09

标签: php javascript codeigniter

例如我有:

<?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

2 个答案:

答案 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