0

在我的 Rails 项目中,我有 HTML 文件

<a href='#' id="show_advanced">Show advanced options</a>

然后在 JavaScript/JQuery

  jQuery("#show_advanced").click(function() { // if link is clicked
      event.preventDefault(); // don't go to another page
      if (jQuery('.advanced_option').is(':hidden')) { // if it is hidden, slide down
        jQuery('.advanced_option').slideDown();
        jQuery("#show_advanced").html("Hide advanced options");
      } else { // if not, slide up
        jQuery('.advanced_option').slideUp();
        jQuery("#show_advanced").html("Show advanced options");
      }
  });

显示表单的高级选项。在 Chrome 中,这可以正常工作。但在 FireFox 中,链接只是将我带到页面.../#,这是不正确的。我该如何解决?

4

2 回答 2

2

我假设您没有阻止锚标记的默认行为。如果您在页面http://example.com/index.html上并且有一个带有哈希 + 文本的锚点作为 href,那么该链接会将用户带到带有 id 文本的元素。

<a href='#end'>Click Me!</a>
...
<div id='end'>content</div>

如果你想阻止浏览器发生这种标准行为,那么你需要使用事件的 preventDefault 函数。关键是将事件传递给回调函数:

jQuery("#show_advanced").click(function(event) {
  event.preventDefault();
  ...
}

您缺少回调声明中的事件参数!

于 2013-06-04T21:16:56.133 回答
0

您实际上不需要 href='#'。把它当作锚就行了。

<a id="show_advanced">Show advanced options</a>
<script> 
    $("#show_advanced").click(function () {
        console.log("clicked");
    });
</script>
于 2013-06-04T21:05:16.820 回答