0

申し訳ありませんが..私はこのような質問を何十回も実行しましたが、どれも私を助けてくれなかったようです:(

トグルスクリプトを使用していますが、スクリプトリンクをクリックするたびにトグルしますが、ページトップにもジャンプします。何か案は?コードは次のとおりです。

<a href="" id="button2">Read More…&lt;a>
<div id="hidden_content2" style="display:none;">
<p>bla bla</p>
</style>
</div>
<script>
$(document).ready(function() {
   $("#button2").toggle(
      function() {
         $(this).text('Hide Content…');
      },
      function() {
         $(this).text('Read More…');
      }
   ).click(
      function() {
         $("#hidden_content2").slideToggle("slow"…
      }
   );
});
</script>
4

7 に答える 7

3

return falseクリック ハンドラ関数から。これにより、リンクのデフォルトの動作が妨げられます。


クリック ハンドラにもタイプミスがあります。

$("#hidden_content2").slideToggle("slow"…

次のようにする必要があります。

$("#hidden_content2").slideToggle("slow");

return falseこれにより、修正されるまでハンドラー (を含む) が壊れます。

于 2013-03-07T12:25:29.280 に答える
2

イベントのデフォルト アクションを防止します。toggleイベント メソッドは非推奨であることに注意してくださいtext。代わりにメソッドのコールバック関数を使用できます。

$(document).ready(function () {
    $("#button2").click(function (event) {
        event.preventDefault();
        $(this).text(function (i, text) {
            return text == 'Hide Content…' ? 'Read More…' : 'Hide Content…'
        });
        $("#hidden_content2").stop().slideToggle("slow");
    });
})
于 2013-03-07T12:25:15.827 に答える
0

クリックでevent.preventDefault()を使用できます。

http://api.jquery.com/event.preventDefault/

jQueryではclickメソッドをonに置き換える必要があると思います。

于 2013-03-07T12:26:28.407 に答える
0

それを使用してください:
あなたのコードのほんの少しの更新

<a href="#" id="button2">Read More…&lt;a>

<div id="hidden_content2" style="display:none;">
    <p>bla bla</p>
</div>

<script type="text/javascript">
$(document).ready(function() {

    $("#button2").toggle(function() {

        $(this).text('Hide Content…');

        }, function() {

            $(this).text('Read More…');

    }).click(function(){

        $("#hidden_content2").slideToggle("slow");
        return false;

    });

});
</script>
于 2013-03-07T12:30:27.793 に答える
0

使用する :JavaScript:void(0); in href

<a href="jJavaScript:void(0);" id="button2">Read More…&lt;a>
<div id="hidden_content2" style="display:none;">
<p>bla bla</p>
</style>
</div>
<script>
$(document).ready(function() {
$("#button2").toggle(function() {
$(this).text('Hide Content…');
}, function() {
$(this).text('Read More…');
}).click(function(){
$("#hidden_content2").slideToggle("slow"…
});
});
于 2013-03-07T12:22:52.323 に答える
0

たとえば、次のように preventDefault を使用できます。

.click(function(e){
    e.preventDefault();
    $("#hidden_content2").slideToggle("slow"…
});

click()または、実際にはアンカー タグを使用する必要がないように見えるため、アンカー タグの代わりにスパンまたは div を使用してイベントを割り当てることもできます。

于 2013-03-07T12:27:50.607 に答える
0

まず、なぜアンカー リンクを使用しているのですか。何にもリンクしていないので、リンクする必要がありますか?通常の div を使用して、カーソルを CSS でポインターに設定することはできませんか? これを行う場合、空のリンクをクリックするというデフォルトの動作を防ぐ必要はありません。

ただし、リンクを保持する場合は、2 つのオプションがあります。

$('#button2').toggle(function(event) {
   event.preventDefault(); 
});

また

$('#button2').toggle(function() {
    return false;
});
于 2013-03-07T12:28:03.787 に答える