0

我有一个这样的链接:

<a hreflang="15" class="comment-show-link" href="">View/hide comments</a>

然后让这段代码显示/隐藏内容:

$('.comment-show-link').click(function(e) {
  $('#comment-show-'+$(this).attr("hreflang")).slideToggle('slow');
  e.stopPropagation();
});

但是当我单击链接时,页面被发送并且没有显示 div "#comment-show-",为什么?我做错了什么?

4

9 回答 9

7

您不想要stopPropagation(阻止事件冒泡),您想要preventDefault(阻止事件的默认操作 - 在这种情况下,按照链接)。或者只是false从您的事件处理函数返回(这两者都 [在链接上,向下滚动到以 "Returning false..."] 开头的段落)。

于 2012-05-11T16:13:11.197 回答
1

这就是锚标签的行为。我认为您希望 e.PreventDefault 阻止它。

于 2012-05-11T16:15:48.553 回答
1

只需传递给href属性javascript:;

<a hreflang="15" class="comment-show-link" href="javascript:;">View/hide comments</a>
于 2012-05-11T16:12:24.953 回答
1

尝试:

<a data-hreflang="15" class="comment-show-link" href="#">View/hide comments</a>

-

$('.comment-show-link').on('click', function(e) {
    e.preventDefault();
    $('#comment-show-'+$(this).data("hreflang")).slideToggle('slow');
});

或为了防止默认操作和冒泡,请执行

$('.comment-show-link').on('click', function() {
    $('#comment-show-'+$(this).data("hreflang")).slideToggle('slow');
    return false;
});
于 2012-05-11T16:13:23.443 回答
0

尝试将 href 属性设置为href="javascript:void(0);"

这是一个jsfiddle:

http://jsfiddle.net/septerr/taCvq/

于 2012-05-11T16:20:42.693 回答
0

去掉href,没用(当然最好用简单的span)。

如果您添加它来更改光标,请改用 css (cursor:pointer)。

于 2012-05-11T16:13:13.697 回答
0

你可以使用preventDefault()

$('.comment-show-link').click(function(e) {
  $('#comment-show-'+$(this).attr("hreflang")).slideToggle('slow');
  e.preventDefault();
});
于 2012-05-11T16:13:28.890 回答
0

不要使用链接。

您没有链接到任何内容,因此将您的内容标记为链接是没有意义的。

于 2012-05-11T16:14:09.757 回答
0

尝试

$('.comment-show-link').click(function(e) {
  $('#comment-show-'+$(this).attr("hreflang")).slideToggle('slow');
  e.stopPropagation();
  return false;
});
于 2012-05-11T16:14:09.877 回答