1
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js" type="text/javascript"></script>
<script src="<?php $this->baseUrl()?>/public/js/jQuery.bubbletip-1.0.6.js" type="text/javascript"></script>
<link href="<?php $this->baseUrl()?>/public/js/bubbletip/bubbletip.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {
    for(i=1;i<12;i++){
    $('#a'+i).bubbletip($('#tip'+i), { deltaDirection: 'right' });
    }
});
</script>

标题部分的代码

   <?php 
    foreach($this->nominations as $nomination)
            {
        for($i=1;$i<12;$i++){
        if($nomination['award'.$i]!=""){?>
        <div id="tip<?php echo $i?>" style="display:none;">
            <div class="star"><strong><?php echo $nomination['award'.$i];?></strong></div>
            <div><strong>Project: </strong><?php echo $nomination['project'.$i]?></div>
        </div>
     <?php }}
for($i=1;$i<12;$i++){
                    if($nomination['award'.$i]!=""){
                echo "<span id='a$i'>";
                echo "<img src='/public/assets/images/icons/star.png'/>";
                echo "</span>"; 
                }}

}?>

正文部分的代码

我的问题是,当将鼠标悬停在第一次迭代的星星上时,foreach一切正常,但从第二次迭代开始就不起作用了,我发现问题出在 id a,tip 上,因为它们总是变成 a1,a2 .. 和 tip1,tip2。 ..有什么解决办法

4

1 回答 1

2

这是因为你的 forach 循环的每次迭代都会从 a1 t a12 创建相同 id 的元素,你需要在 ids 的名称中添加另一个级别。尝试使用以下

<?php
$count=0;
    foreach($this->nominations as $nomination)
            {
            $count++;
        for($i=1;$i<12;$i++){
        if($nomination['award'.$i]!=""){?>
        <div id="tip<?php echo $i?>_<?php echo $count?>" style="display:none;">
            <div class="star"><strong><?php echo $nomination['award'.$i];?></strong></div>
            <div><strong>Project: </strong><?php echo $nomination['project'.$i]?></div>
        </div>
     <?php }}
for($i=1;$i<12;$i++){
                    if($nomination['award'.$i]!=""){
                echo "<span id='a$i_$count'>";
                echo "<img src='/public/assets/images/icons/star.png'/>";
                echo "</span>"; 
                }}

}
<input type="hidden" id="total_iteration" name="total_iteration" value="<?php echo $count?>"/>
?>

并相应地更改您的javascript代码

<script type="text/javascript">
$(document).ready(function() {

var total=$('#total_iteration').val();
var t=0;
 for(t=1;t<total;t++)
 {

    for(i=1;i<12;i++){
    $('#a'+i+'_t').bubbletip($('#tip'+i+'_'+t), { deltaDirection: 'right' });
    }

    }
});
</script>

在对上面的代码进行一些调试之后,应该按照你想要的方式运行我还没有测试过,但我想主要问题是每次 foreach 迭代中重复 id 的元素

于 2012-10-15T12:15:55.767 回答