在 jQuery 中选择类中的下一个实例

发布于 2024-12-06 21:25:14 字数 722 浏览 0 评论 0原文

我有一个表格,其中交替排列课程名称和课程描述。以下是一些 html(我循环浏览的):

<tr>
    <td><a class="course_name_click" href='#'><%= course.name %></a></td>
</tr>

<tr class="course_descrip" height="200">
    <td style="word-wrap: break-word" width="10"><%= course.descrip %></td>
</tr>

我想这样做,以便当用户单击课程名称时,课程描述幻灯片会上下切换。但我无法找到正确的选择器在单击的课程名称之后出现的课程描述。我尝试了 $(this) 和 .next( 的多种不同组合),但似乎都不起作用。到目前为止,这是我的 jquery:

  $('.course_name_click').click(function() {
    $('tr.course_descrip').slideToggle('slow');
    return false;
  });

如上面所示,单击任何课程名称幻灯片会切换 tr.course_descrip 的每个实例。我只希望它滑动切换单击的课程名称后出现的实例。

I have a table with alternating rows of course names and course descriptions. Here's some of the html (that I loop through):

<tr>
    <td><a class="course_name_click" href='#'><%= course.name %></a></td>
</tr>

<tr class="course_descrip" height="200">
    <td style="word-wrap: break-word" width="10"><%= course.descrip %></td>
</tr>

I'd like to make it so that when the user clicks on the course name, the course description slide toggles up and down. But I'm having trouble finding the right selector for the course descrip that appears right after the course name that is clicked. I've tried a bunch of different combinations of $(this) and .next(), but none seems to work. Here's my jquery so far:

  $('.course_name_click').click(function() {
    $('tr.course_descrip').slideToggle('slow');
    return false;
  });

As it appears above, clicking on any course name slide toggles every instance of tr.course_descrip. I only want it to slide toggle the instance that appears after the course name that is clicked.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ˇ宁静的妩媚 2024-12-13 21:25:15

这是因为 $(this).next() 获取了被单击的 的下一个同级,这没什么。您必须获取其父级的父级()并执行下一步操作:

$('.course_name_click').click(function() {
    $(this).parent().parent().next().slideToggle('slow');

    return false;
});

这是一个 jsFiddle 它的工作原理。

编辑:马特的回答可能比.parent().parent()更具语法意义

This is because $(this).next() gets the next sibling of the <a/> that was clicked, which is nothing. You will have to get it's parent's parent (the <tr/>) and do next on that:

$('.course_name_click').click(function() {
    $(this).parent().parent().next().slideToggle('slow');

    return false;
});

Here is a jsFiddle of it working.

Edit: Matt's answer may make more syntactic sense than doing .parent().parent()

庆幸我还是我 2024-12-13 21:25:14
$('.course_name_click').click(function() {
  $(this).closest('tr').next().slideToggle('slow');
  return false;
});
$('.course_name_click').click(function() {
  $(this).closest('tr').next().slideToggle('slow');
  return false;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文