3

当我尽力解释我需要什么时,请耐心等待:)

我们有 3 个链接指向页面下方的锚点,如下所示:

<a href="#step1">Step 1</a><div id="#step1">

<a href="#step2">Step 2</a><div id="#step2">

<a href="#step3">Step 3</a><div id="#step3">

所以我想要做的是动态地定位我要去的元素。因此,如果我单击 Step 1 链接,我会转到 id 为 step1 的 div,但使用 jQuery 选择目标元素(id 为 step1 的 div)。

所以这个片段不起作用,但我认为是在正确的道路上:

$(this).effect("highlight", {}, 3000);

...它选择了我点击的链接 - 不对!我想选择我在该链接中定位的元素。得到它?现在,我知道我可以对其进行硬编码,但必须有一种方法可以动态地定位我想要的东西。

如果这没有任何意义,我很抱歉。我会喜欢任何和所有的帮助和反馈。

谢谢!

4

3 回答 3

5
$($(this).attr('href')).effect("highlight", {}, 3000);

http://jsfiddle.net/b9nub/

PS:注意不需要#id值中使用,所以

<div id="step1">
于 2012-08-02T21:14:51.993 回答
2

这是我用来刷新#anchor 链接目标的代码。维基百科使用类似的技术来闪现脚注。

/**
 * Temporary highlight targets of #anchor links.
 */
$('a').click(function() {
  if (/#(.*)/.test($(this).attr('href'))) {
    var $target = $('#' + RegExp.$1 + ', *[name="' + RegExp.$1 + '"]');
    var repeats = 15;
    function step() {
      repeats--;
      $target[repeats ? 'toggleClass' : 'removeClass']('target');
      if (repeats) {
        window.setTimeout(step, 50);
      }
    }
    step();
  }
});

(您必须在样式表中添加一个“目标”类来设置它的样式。)

顺便说一句,只是为了让您知道:可以单独使用 CSS3,使用它的 :target 伪类来设置目标元素的样式:

div:target {
  color: red;
}
于 2012-08-02T21:24:59.663 回答
1

在 a 标签的点击事件中,这指的是 a 元素。所以我假设你想从那个标签中获取href,并使用你自己的逻辑来突出显示div。

$($(this).attr('href')).effect("highlight", {}, 3000);
于 2012-08-02T21:15:51.093 回答