0
4

5 に答える 5

2

この新しいコード:

$(document).ready(function() {
  $(document).on('click',function(e) {
     e.preventDefault();
     // ...
   });
});

stopPropagation...ドキュメントにバブルアップするクリックが発生した場合 (より深いハンドラーから呼び出さない限り、ほとんどのクリックが最終的に発生するため)、ブラウザーはデフォルトのアクションを防止する必要があることをブラウザーに伝えます。リンクをクリックした場合のデフォルトのアクションは、リンクをたどることです。

e.preventDefault();解決策は、クリックのアクションを防ぎたい場合にのみ呼び出すことです。おそらくそのコードを再キャストする方法は次のとおりです。

$(document).ready(function() {
  $(document).on('click',function(e) {
    var $panel = $("#planning_panel");
    if ($(e.target).closest("#planning")[0]) {
      // Click is on the planning link, toggle the panel and prevent the default
      $panel.slideToggle('slow');
      e.preventDefault();
    } else {
      // Not on the planning link, slide the panel up
      $panel.slideUp('slow');
    }
  });
});

実例| ソース (リンク先に変更../index.htmlhttp://stackoverflow.comましたHOMEが、それ以外はコードのみ変更)

ここでは、クリックが#planningリンク上にある場合にのみ、クリックの既定のアクションを防止しています。

サイドノート:より堅牢であるためclosest、チェックの代わりに使用しました。e.target.idマークアップで厳密に必要というわけではありませんが、マークアップを少しspan変更した場合 (または何かを追加em)、それが必要になるため、堅牢性に優れています。

于 2013-01-01T10:44:56.250 に答える
1
$(document).on('click',function(e) {
  e.preventDefault();

これにより、クリックのデフォルトの動作が妨げられます。

于 2013-01-01T10:45:12.917 に答える
1

これが問題になるはずです:

$(document).on('click',function(e) {
  e.preventDefault();

ドキュメントのすべてのクリックを禁止するため、リンクが正しく機能しません。最初の行を次のように変更します

$('#planning').on('click', function(e){
  e.preventDefault();

ところで、あなたの機能が何をするのかよくわかりません。

于 2013-01-01T10:47:05.960 に答える
1
$(document).on('click',function(e) {

これは次のようになります。

$(document).on('click', '#planning', function (e) {
于 2013-01-01T10:52:59.947 に答える
-1
<script> 
$(document).ready(function() {
 $(document).on('click',function(e) {
e.preventDefault();
var $panel = $("#planning_panel");
if (e.target.id == 'planning') {
 $panel.slideToggle('slow');
} else {
 $panel.slideUp('slow');
}

    });
  });

この仲間を使う

于 2013-01-01T10:44:12.687 に答える