Javascript e、 preventDefault()以防止锚点跳转到不使用匿名函数的ID
我有以下jQuery/JS,当单击元素时会触发一些内容:Javascript e、 preventDefault()以防止锚点跳转到不使用匿名函数的ID,javascript,jquery,preventdefault,Javascript,Jquery,Preventdefault,我有以下jQuery/JS,当单击元素时会触发一些内容: $(tabs).click(function(e) { tabs.removeClass('active'); $(this).addClass('active'); $(tabIDs).removeClass('js_tab_area_show'); $($(this).attr('href')).addClass('js_tab_area_show'); e.preventDefault()
$(tabs).click(function(e) {
tabs.removeClass('active');
$(this).addClass('active');
$(tabIDs).removeClass('js_tab_area_show');
$($(this).attr('href')).addClass('js_tab_area_show');
e.preventDefault();
alert('worked');
});
选项卡
此处已在函数之前初始化,并已选择我要针对的元素。以上所有的事情都已经开始起作用了。但是,我现在想禁用锚元素(即本例中的选项卡
)滚动到包含在锚属性href
中ID的元素。我试着四处看看,许多人建议preventDefault()
防止滚动。然而,这对我来说并不管用。我主要看到的唯一区别是它们有一个命名函数,专门用于处理从click函数中调用的click事件。另一方面,我的也做了上述工作。警报('worked')
确实触发,指示代码一直执行到结束。我在这里做错了什么?href
修改
不要让JavaScript/jQuery或CSS过于复杂,而是执行以下操作
向下滚动
⇩
href
修改
不要让JavaScript/jQuery或CSS过于复杂,而是执行以下操作
向下滚动
⇩
在您的示例中,我看不出是什么代码在控制滚动。事件。preventDefault
不用于在此处停止函数。如果您想在发出警报('worker')之前立即停止开火,则应该是return false
@Kai,而不是我想停止函数在那里执行,然后再执行。我希望它能防止a
滚动到div
,该div与a
的href
中包含的id相同。在这里查看更多信息,这就是我找到的“建议”的意思:@WealthyPlayer,因此请尝试在结尾处返回false
:D.@Kai我放置返回false
在alert('worked')
之后,它仍然会滚动到div
元素。在您的示例中,我看不到是什么代码在控制滚动。事件。preventDefault
不用于立即停止函数。如果您想在发出警报('worker')之前立即停止开火,则应该是return false
@Kai,而不是我想停止函数在那里执行,然后再执行。我希望它能防止a
滚动到div
,该div与a
的href
中包含的id相同。在这里查看更多信息,这就是我找到的“建议”的意思:@WealthyPlayer,因此请尝试在结尾处返回false
:D.@Kai我放置返回false
在alert('worked')
之后,它仍然滚动到div
元素。如果是这种情况,我认为使用a
毫无意义。诚然,我可能不应该使用a
,因为我正在实现tab
;如果将不同的概念应用到我的处理程序中,任何其他元素(如div
)也可以正常工作。还有更多的问题:1。我是否应该将我的a
更改为div
,这意味着调整我的JS概念2.如果我仍然想使用我上面的代码(a
包含指向目标元素的href
),因为我的JS代码在很大程度上依赖于目标a
的href
,该怎么办?是否可以禁用JS/jQuery中的滚动/跳转功能?1。不,除非你有空。2.取决于hrefs是否与:target
选择器一起使用,如果是这样,我会更改它,因为它不是非常灵活,也不是很有用。3.是的,可以禁用滚动。。。您是否尝试过放置e.preventDefault()函数中第一行的代码>。我总是这样做并且e.preventDefault()代码>从未让我失望过。1。好的,谢谢。2.不,他们不是。我只是在运行一个for
循环,以获取a
s的所有href
,并将它们保存在上面的tabid
中,我将用于下一个函数。3.是的,这是这里的主要问题。在上面的代码中,我已经使用了e.preventDefault()代码>,请看一看,尽管是在代码的最后第三行。不过这不要紧。我还尝试了返回false代码>正如上面对我的问题的评论所建议的。“我已经使用了e.preventDefault();,请看一看,尽管是在代码的最后第三行。但这不重要。”顺序在编程的许多方面都很重要。在处理事件时,事件触发捕获传播等有一个顺序。我会测试您的代码,但我也需要HTML。您好,我刚刚将e.preventDefault()
作为我的单击处理函数中要执行的第一行。还是不行。如果是这样的话,我认为使用a
毫无意义。诚然,我可能不应该使用a
,因为我正在实现tab
;如果将不同的概念应用到我的处理程序中,任何其他元素(如div
)也可以正常工作。还有更多的问题:1。我是否应该将我的a
更改为div
,这意味着调整我的JS概念2.如果我仍然想使用我上面的代码(a
包含指向目标元素的href
),因为我的JS代码在很大程度上依赖于目标a
的href
,该怎么办?是否可以禁用JS/jQuery中的滚动/跳转功能?1。不,除非你有空。2.取决于hrefs是否与:target
选择器一起使用,如果是这样,我会更改它,因为它不是非常灵活,也不是很有用。3.是的,可以禁用滚动。。。您是否尝试过放置e.preventDefault()代码>在fu中的第一行
<a href="#/">I DON't JUMP</a>