【问题标题】:the link with href # anchor does not open the #div带有 href # 锚的链接不会打开 #div
【发布时间】:2017-09-22 00:43:23
【问题描述】:

我在根据选项值打开 div 的站点中放置了一个选择选项列表。当您在站点中时,这可以正常工作。但是,如果我直接在地址栏中调用链接,例如 x.ro/y.html#3,它会显示 div #1 而不是 div #3

这是代码(div id 1 是display: none,div id 2 是display: block):

$(function() {
  $('#articole').change(function(){
    $('.tiparticol').hide();
    $($(this).val()).show();
  });
});
<select id="articole"  onChange="window.location.href=this.value">
  <option value="#1">1</option>
  <option value="#2" select="selected">2</option>
</select>

谢谢!

【问题讨论】:

  • 你能把你的完整代码贴在 jsin 或 jsfiddle 上吗?所以,我们可以在细节方面为您提供帮助。

标签: jquery html css anchor href


【解决方案1】:

默认情况下您不会获得此行为。您需要在加载时检查window.location.hash 并设置适当的值。

还请注意,您应该从 HTML 中删除 onChange="window.location.href=this.value" 属性。您可以在不显眼的 jQuery change 处理程序中设置它。试试这个:

$(function() {
  // on change
  $('#articole').change(function() {
    window.location.hash = this.value;
    setOption(this.value);
  });

  // on load
  var hash = window.location.hash.substr(1);
  if (hash)
    setOption(hash);
});

function setOption(value) {
  $('.tiparticol').hide();
  $(value).show();
}

【讨论】:

  • 感谢您的帮助...我不明白“您需要在加载时检查 window.location.hash 并设置适当的值”的部分。这样,显示的块 div 消失了,但调用的 div 没有显示。
  • 最后它工作得非常好!我刚刚从加载代码中删除了 subst(1)
  • $(function() { // 更改时 $('#articole').change(function() { window.location.hash = this.value; setOption(this.value); } ); // 加载时 var hash = window.location.hash; if (hash) setOption(hash); });函数 setOption(value) { $('.tipartic').hide(); $(值).show(); }
【解决方案2】:

选项属性应该是selected,而不是select

查看this working jsfiddle

【讨论】:

  • 谢谢!我没注意到
猜你喜欢
  • 2023-02-23
  • 1970-01-01
  • 2015-01-20
  • 2017-04-10
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多