1

例如我有:

<?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,它都会打开一个具有相同 url 的新窗口,但是如果我的数据库中有 5 个不同的 url,我希望当我们点击每行的第一个 div 时,它会打开一个窗口第一个网址,当我们单击第二个网址时,它将打开第二个网址

我认为这可以通过使用类来实现,例如 class="item1"、item2、item3、item4、item5,但是如果我们只有 3 个 url,而不是 5 个,在这种情况下,我怎样才能使前三个 div将打开前 3 个 url,但剩下 2 个,将打开最后一个,它是 3 div

对不起我的英语不好,也许你知道如何做到这一点,谢谢!

ps:我正在使用codeigniter

4

2 回答 2

3

除了类,您可以为每个部门设置像 item_1、item_2 等的 ID,在 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; ?>
于 2012-06-13T12:41:44.840 回答
1

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

第二种选择是在 div 中隐藏一个锚点,然后在 javascript 操作中,您只需选择单击的 div 中的锚点即可获取 URL

于 2012-06-13T12:33:41.143 回答