【问题标题】:hashchange jQuery not workinghashchange jQuery不工作
【发布时间】:2017-02-15 14:56:18
【问题描述】:

我有一个表单,可以在成功提交时向我的域添加一个哈希 URL (http://domain.com/#addedhash)

我希望表单在添加哈希链接后为其自身添加一个类。

我有这段代码,但由于某种原因它不起作用:

<script type="text/javascript">
$(document).ready(function() {
    $(window).on('hashchange', function() {
        if (window.location.href.indexOf("#addedhash") > -1 ) {
            $('.myclass').addClass('hide');
        } 
    });    
});
</script>

也许任何人都可以在这里看到错误?

如果链接的哈希是通过单击按钮添加的,则它可以工作,但如果它是通过表单提交成功结果添加的,则脚本不会执行任何操作。有什么想法吗?

【问题讨论】:

  • if (window.location.href.indexOf("#addedhash") &gt; -1) {...} 或更好,检查window.location.hash
  • 为什么不在你要附加 url 的同一个地方添加类?就像表单提交成功一样——如果我理解正确的话,为此添加一个监听器对我来说似乎有点矫枉过正——顺便说一句if (window.location.href.indexOf("#addedhash"))
  • 你的代码在我这边运行正常。
  • @RanaGhosh 但是-1 在 javascript 中确实具有价值,我不知道你如何检查它?!
  • 我复制了相同的代码,并添加了一个带有“myclass”类的手动 div。它对我有用

标签: jquery hashchange


【解决方案1】:

据我所知,提交表单的方式与提交链接的方式不同。它会打开一个新查询。哈希是由链接对象而不是 Form 对象在内部 (DOM) 控制的。

【讨论】:

  • 那么当哈希链接出现时,有没有其他方法可以向元素添加类?我知道在成功提交表单后我可以通过 PHP 来完成,但对 PHP 几乎一无所知。谢谢
  • 我认为你应该在提交时添加一个偶数,这样你就可以处理这种情况。当 submit 调用的函数返回 false 时,提交被取消。
  • 您必须在提交处理程序中专门防止提交表单的默认操作,并自己操作哈希。如果您不这样做,那么页面将被重新加载。
【解决方案2】:

奇怪但将$(document).ready(function() { ... 更改为jQuery(document).ready(function() { ... 已解决问题。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多