3

我想制作一个 div,或者更准确地说,一个“aside”元素,当单击另一个具有相同类的元素时,它会出现一个 id 或类……我知道有标准的类选择器,但我希望有多个具有不同 id 或类的“aside”元素,并且我希望打开与单击的元素具有相同类或 id 的那个元素...

所以,我不想为每个 div 编写这段代码:

    $(window).load(function(){
      $('nav ul li#someid').click(function () {
      $('aside#someid').toggleClass('opened');
      });
    });

我想要这样的代码。有没有办法将示例中的 someid 更改为检测单击的元素具有什么 id 并将其用作“aside”选择器的东西?

4

4 回答 4

1

首先,您可能想知道您可以使用它this来访问被点击的对象。这意味着您可以获取this.idthis.className获取被单击对象的 id 或类。现在,您对该信息的确切处理取决于您的 HTML 的结构,因此我们需要查看它以提供更多细节。

同一页面中不能有多个具有相同 ID 的对象。您根本无法做到这一点(当您这样做时,选择器将无法正常工作),因此您想要的方案将无法正常工作。您可以改用类并使用相同的类切换其他项目。这适用于一个特定的li.

$(document).ready(function(){
    $('nav ul li.foo').click(function () {
        $('aside.foo').toggleClass('opened');
    });
 });

或者,根据您的 HTML(如果您的 li 标签上只有一个类),您可以执行更通用的版本,如下所示:

$(document).ready(function(){
    $('nav ul li').click(function () {
        $('aside.' + this.className).toggleClass('opened');
    });
});

如果您向我们展示您的实际 HTML,我们可以提供最佳选择。

于 2012-12-13T19:06:52.093 回答
1

您可以尝试使用:

this.id

this指向捕获事件的元素。

于 2012-12-13T19:07:59.800 回答
0

你检查过jQuery 以 selector 开头吗?

jQuery('[属性^="值"]')

$('aside[id^="foo_"]').toggleClass('opened');

这将为属性以开头的所有aside标签调用 toggleClassidfoo_

正如其他人所提到的,您不能拥有超过 1 个相同的 id 标记,但是您可以将它们全部启动并使用以选择器开头...等foo_来定位它们。foo_1 foo_2 foo_3

于 2012-12-13T19:06:54.260 回答
-2

试试喜欢

  $(function(){
      $('nav ul li.someClass').click(function () {
      $('aside#aside_' + $(this).attr('id')).toggleClass('opened');
      });
    });
于 2012-12-13T19:07:23.170 回答