1

我在 .php 中有以下代码(代码经过编辑以便于理解)。

while($row = mysql_fetch_array($biznis)){
<div id='listItem'>
    <div id='listPic'>
        <img src='../../social/images/avatar/empty_avatar_full.jpg'></img>
    </div>
    <div id='listCont'>
        <span>abcde<i>(request pending)</i></span>                              
    </div>
    <div id="listInfo">
        <span id='info'>More info</span>
    </div>
    <div style='clear:both;'></div>

    <div id='moreInfo'>
        <span>Invitation sent: xx-yy-zzzz</span>
    </div>
</div>

<div style='clear:both;'></div>
}

所以代码没什么特别的,我只是把表格中的所有记录排成一行。所以现在,问题来了,正如你所看到的,我对相同的元素使用相同的 id。

jQuery代码

$(document).ready(function () {
    $("#moreInfo").hide();

    $("#info").click(function(){
    $("#moreInfo").slideToggle();
});
});

好的,现在问题就来了。只有第一个 div (#moreinfo) 被隐藏,所有其他的都被显示。只有第一个跨度 (#info) 正在切换滑块。

我尝试为 ids 设置计数器,并为每个函数设置 jquery,但没有像我想象的那样真正起作用。

泰,塞巴斯蒂安

4

2 回答 2

3

使用 class 而不是 ids,因为您处于 while 循环中。一个 id 只存在一次。

并更新您的 JS。

于 2013-02-17T15:33:54.987 回答
3

元素 ID 应该是该元素的唯一标识符。为通用选择器使用类名:

<? while($row = mysql_fetch_array($biznis)): ?>
<div class="listItem">
    <div class="listPic">
        <img src="../../social/images/avatar/empty_avatar_full.jpg"></img>
    </div>
    <div class="listCont">
        <span>abcde<i>(request pending)</i></span>                              
    </div>
    <div class="listInfo">
        <span class="info">More info</span>
    </div>
    <div style="clear:both;"></div>
    <div class="moreInfo">
        <span>Invitation sent: xx-yy-zzzz</span>
    </div>
</div>
<div style="clear:both;"></div>
<? endwhile; ?>

并将您的 jQuery 更改为:

$(function() {
   $('.moreInfo').hide();
   $('.info').click(function() {
      $('.moreInfo').slideToggle();
   });
});

编辑

$('.info').click(function() {
   $(this).parent().siblings('.moreInfo').slideToggle();
});
于 2013-02-17T15:33:58.213 回答