【问题标题】:jQuery / PHP: Show more infos between two rows using slideTogglejQuery / PHP:使用 slideToggle 在两行之间显示更多信息
【发布时间】:2012-09-04 04:34:17
【问题描述】:

我几乎完成了我的事件表,但还需要做最后一件事。我已经创建了一个表格,现在我想通过点击一个事件来显示信息。

我的实际代码没有 slideToggle。如果您单击一个事件,它会在一个新页面上打开该事件,我对此并不幸运。我想打开该行下方的事件的附加信息。

这是实际代码(更新):

<?php
$query = "SELECT `id`, TIME_FORMAT(doors,'%H:%i') AS `doors`, TIME_FORMAT(begin,'%H:%i') AS `begin`, `category`, `who`, `infos`, `location`, `smoke`, `dogs`, DATE_FORMAT(date,'%d.%m.%Y') AS `de_date` FROM `events` WHERE `status` = 'enabled' ORDER BY `date` ASC";
$events_resource = mysql_query($query) or die(mysql_error());
?>


<table class="tableLine">
<tr>
<th>Wann?</th>
<th>Was?</th>
<th>Wer?</th>
<th>Wo?</th>
</tr>

<?php
$all_events = array();
$ten_events = array();

for($i = 0; $events = mysql_fetch_object($events_resource); $i++){

if($i < 9){

    $ten_events[] = $events;
}

$all_events[] = $events;
}  

$i = 0;

foreach($ten_events as $event): ?>
<tr class="row" class="show_button" href="#">
    <td><?=$event->de_date?></td>
    <td><?=$event->category?></td>
    <td><?=$event->who?></td>
    <td><?=$event->location?></td> 
</tr>
<tr>
<td class="eventinfos" colspan="4">
<?=$event->infos?>
</td>
</tr>
<?php endforeach; ?>
</table>
<script>
$(document).ready(function(){
$('.eventinfos').hide();
$('.show_button').click(function(){
$(this).closest('.row').find('.eventinfos').slideToggle();
})
})
</script>

好吧,我真的不知道将隐藏信息放在哪里(使用 div?)以及我需要使用哪个 slideToggle 代码以及放在哪里。我对这段代码做了一些尝试,但我的知识还不够好。

这是我想要的 Photoshop 示例:

希望你能帮帮我。

【问题讨论】:

    标签: jquery events html-table row slidetoggle


    【解决方案1】:

    试试这个(更新):

    <table class="tableLine">
    <?php foreach($ten_events as $event): ?>
      <tr class="show-info" style="cursor: pointer;">
            <td><?=$event->de_date?></td>
            <td><?=$event->category?></td>
            <td><?=$event->who?></td>
            <td><?=$event->location?></td>
      </tr>
      <tr class="event-info">
            <td colspan="4"><?=$event->infos?></td>
      </tr>
    <?php endforeach; ?>
    </table>
    <script>
      $(document).ready(function(){
        $('.show-info').on('click', function(){
          $(this).next('.event-info').slideToggle();
        })
      })​
    </script>
    

    要最初隐藏信息行,请指定 css-rule(在您的 css 文件或页面头部的样式部分中):

    .event-info {
        display: none;
    }
    

    查看我的代码:http://jsfiddle.net/JEU6T/8/ UPD. 查看更多通用代码(javascript 稍作改动):http://jsfiddle.net/Eb3t3/3/

    【讨论】:

    • 或者尝试将 class="eventinfos" 从 td 移动到 tr
    • 我尝试了很多东西。您的代码从一开始就不起作用。在我做了一些更改后(参见第一篇文章中的代码),表格显示没有错误,但我无法打开一行。什么都没发生。隐藏的文字在那里。当我重新加载页面时,我有时会看到它们(不好,顺便说一句。)。有什么想法有什么问题吗?
    • 现在可以了。是否可以只用DIV制作表格,从而顺利打开?
    • 当然是。我不擅长 html/css,但主要思想仍然存在。查看更多通用代码(javascript中的一点变化):jsfiddle.net/Eb3t3/3
    【解决方案2】:

    将信息放在一个 div 中,并将这段代码放在你的脚本中

    $(document).ready(function(){
        $("#inform_id").hide();
        $("#show_button").click(function(){
             $("#inform_id").toggle();
       })
    })
    

    【讨论】:

    • 考虑inform_id是你的信息id,show_button是按钮的id来显示信息
    • 我现在不在我的机器上测试它,但在最后一个 &lt;/td&gt;- 和 &lt;/tr&gt;-tag 之间的 DIV 位置是否正确?
    • 当然。把那个 div 放在你的 中并给 colspan=4(我的意思是你有 4 列对吗..?)
    • 我有一些问题。只有第一行被隐藏,当我点击它时,它会自动打开/关闭三次。查看第一篇文章并查看我的新代码。
    • 您应该指定 class="eventinfos",而不是 id="eventinfos"。 ID 在每个页面中必须是唯一的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 2014-06-30
    • 2014-05-26
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多