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、イベントハンドラー関数から戻るだけです([リンク上で、「returningfalse ...」で始まる段落までスクロールダウンします]

于 2012-05-11T16:13:11.197 に答える
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 に答える
1

これがアンカータグの動作です。e.PreventDefaultで止めてほしいと思います。

于 2012-05-11T16:15:48.553 に答える
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 に答える
0

hrefを削除します。これは役に立ちません(もちろん、単純なスパンを使用する方がよいでしょう)。

カーソルを変更するために追加した場合は、代わりに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

href属性をhref="javascript:void(0);"に設定してみてください

これがjsfiddleです:

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

于 2012-05-11T16:20:42.693 に答える