【发布时间】:2015-04-09 08:43:50
【问题描述】:
一个人(可能使用通常的嫌疑人Javascript)怎么能有几个(起初没有突出显示的链接)然后实现:
打开(永久)和关闭突出显示并区分突出显示和重定向?
- 点击一个词使高亮显示永久(打开)。
- 再次点击(打开后)该词会重定向到文章。
- 点击其他地方会移除高亮显示(关闭)。
编辑(澄清,在问题被搁置后):
切换突出显示
我知道可以使用 .addClass("active"); 和 .removeClass("active"); 处理此突出显示,但不知道如何在添加 Class("active") 时包含链接和/或在添加 Class 时如何禁用链接删除。 CSS 然后需要(例如).active{background:green}
切换重定向(链接跟随)
- 所以,现在发现
preventDefault();在启用或禁用链接跟踪方面起着核心作用;因为,正如人们在its entry in the jQuery-api 中看到的那样:
- 如果调用此方法,则不会触发事件的默认动作。
- 例如,单击的锚点不会将浏览器带到新的 URL。
- 另一种方法是使用
return false;。
两者之间的区别与传播(或
“冒泡”)
DOM。关于
这种差异,可以阅读
CSS-tricks
或者看看下面的答案
somethinghere,
当他添加event.stopImmediatePropagation(); 来阻止这个
冒泡
两者之间的区别如下:return false; 本身也可以防止这种传播,而preventDefault(); 不会。
CSS-tricks-articlesais:
function() {return false;}
等于:
function(e) {e.preventDefault(); e.stopPropagation();}
更多关于差异的文献可以在 StackExchange 上找到,其中可能包含一些重复的帖子?
- What's the difference between e.preventDefault(); and return false?,
- event.preventDefault() vs. return false,
- event.preventDefault() vs. return false (no jQuery),
- Difference - "e.preventDefault();" and "return false;"。
var anchors = document.getElementsByTagName('a'),
length = anchors.length,
index;
for (index = 0; index < length; index += 1) {
anchors[index].onclick = function (e) {
e.preventDefault();
if (!(/\bhighlight\b/).test(e.target.className)) {
e.target.className += ' highlight';
}
};
}
.blockElement {
display:block;
float: left;
clear: left;
}
.highlight {
background-color: yellow;
}
<a href="#one" class="blockElement">Jump to One</a>
<a href="#two" class="blockElement">Jump to Two</a>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<div id="one">One</div>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<div id="two">Two</div>
【问题讨论】:
-
嗯,有一个问题我正在处理,例如highlighting a current link in JS,但我没有第二次点击获得不同操作的经验。我会建议自己尽快参加初学者的 JS 课程。 :) 我需要对这种强大的语言有更多的了解。
-
好的,但是您尝试了什么?什么不起作用?
-
我还没有彻底测试过,但是看看,最坏的情况是你可以用它来解决更多问题。 jsfiddle.net/Xotic750/uysk5jpm
-
使用CSS设置
body为整页大小,使用html,更新jsFiddle为例。正如我所说,我没有彻底测试过它。当我无法添加完整答案时,这很困难。 :) -
添加了我错过的额外
preventDefault。基本上我添加了一些CSS。看看这个问题。 stackoverflow.com/questions/6654958/…
标签: javascript jquery html