-1

我有代码:

<table id="table_id">
  <tr id="tr_id">
     <td id="td_id">
         <p id="tresc"> text </p>
         <a href="#" id="link">more1</a>
         <p id="tresc_more" style="display:none"> more text 1</p>
     </td>
  </tr>
  <tr id="tr_id">
     <td id="td_id">
         <p id="tresc"> text </p>
         <a href="#" id="link">more2</a>
         <p id="tresc_more" style="display:none"> more text 2 </p>
     </td>
  </tr>

  $(document).ready(
  function()
  {
   $("table#table_id tr td a#link").click(
   function()
   {
     $("table#table_id tr td p#tresc_more").toggle();
   });
  });

问题是:当我单击链接“more1”时,它会显示每一行中的所有隐藏文本,我只想在我单击的一行中看到隐藏文本(例如:当我单击 more2 时,我想查看“更多文本 2 ”)。

4

6 回答 6

3

一个问题是您使用了非唯一的 ID 名称。

ID 必须是唯一的,类名可以重复使用。

变化:

<table id="table_id">
  <tr class="tr_class">
    <td class="td_class">
      <p class="tresc"> text </p>
      <a href="#" class="link">more1</a>
      <p class="tresc_more" style="display:none"> more text 1</p>
    </td>
  </tr>
  <tr class="tr_id">
    <td class="td_id">
      <p class="tresc"> text </p>
      <a href="#" class="link">more2</a>
      <p class="tresc_more" style="display:none"> more text 2 </p>
    </td>
  </tr>
</table>

和 JS:

$(document).ready(function() {
  $("table#table_id tr td a.link").click(function() {
    $(this).next(".tresc_more").toggle();
  });
});

$(this).next(".tresc_more").toggle(); 将找到该类的下一个对象并切换它。

于 2009-12-18T18:54:57.753 回答
1
$(this).next().toggle();
于 2009-12-18T18:55:56.113 回答
1

在您绑定到的函数中click,这将切换单击链接后面的第一个元素:

$(this).next().toggle();

这将切换p点击链接后面的第一个元素:

$(this).next('p').toggle();

由于您将函数绑定到链接的单击事件,因此您可以使用this(或者$(this)如果您想对其执行 jQuery 操作)引用该函数中的链接。

于 2009-12-18T18:56:40.493 回答
0

编辑为

<table id="table_id">
  <tr class="tr_id">
     <td class="td_id">
         <p class="tresc"> text </p>
         <a href="#" class="link">more1</a>
         <p class="tresc_more" style="display:none"> more text 1</p>
     </td>
  </tr>
  <tr class="tr_id">
     <td class="td_id">
         <p class="tresc"> text </p>
         <a href="#" class="link">more2</a>
         <p class="tresc_more" style="display:none"> more text 2 </p>
     </td>
  </tr>
</table>

  $(document).ready(
  function()
  {
   $("table#table_id tr td a.link").click(
   function()
   {
     $(this).next('p').toggle();
   });
  });

使用 next('p') 因此,如果您在链接和段落之间添加另一个标签,则代码很可能会起作用,只要您不在之间添加另一个段落;)

正如另一篇文章中提到的那样。ID 属性在每个 HTML 文档中都是唯一的,不能有多个具有相同值的

于 2009-12-18T19:00:43.387 回答
0

您可以使用您单击的节点的兄弟节点,例如:

   $("table#table_id tr td a#link").click(
   function()
   {
     $(this).siblings("#tresc_more").toggle()
   });
  });
于 2009-12-18T19:05:28.870 回答
0

我对你的代码有点自由。这是标记和jquery:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0   Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <link href="../Styles/StyleSheet.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .moreInfo
        {
            background-color: #f9f9f9;
        }

        .linkLook {color: #0000ff; cursor: pointer; text-decoration: underline;}
    </style>
</head>
<body>
    <table id="displayTable">
        <tbody>
            <tr>
                <td>
                    <p>
                        Show More</p>
                    <div class="moreInfo">
                        More Information to be displayed.
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        Show More</p>
                    <div class="moreInfo">
                        More Information to be displayed.
                    </div>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        Show More</p>
                    <div class="moreInfo">
                        More Information to be displayed.
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
</body>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">

    $(document).ready(function() {

        $('table#displayTable:eq(0) .moreInfo').hide();        
        $('table#displayTable:eq(0)> tbody td>p').addClass('linkLook');
        $('table#displayTable:eq(0)>  tbody td>p').click(function() {
            $(this).next().toggle();
        });
    });
</script>

</html>

如您所见,我将超链接更改为纯段落,并为每个将执行 jquery 切换功能的链接添加了一个单击事件。我认为您遇到的主要问题是遍历表格的 DOM 以及您想要可点击和隐藏的信息。

希望这会有所帮助。

于 2009-12-18T19:55:08.863 回答