0

複数のクリックがあり、クリックしたらバインドを解除する必要がありますが、リンクのボタンを再バインドする必要があります。

次に例を示します。

$('.001').click(function(){
      jQuery(this).unbind('click');
      jQuery('.hide').hide();
      jQuery('.show').show();
      jQuery(this).find('.show').hide();
      jQuery(this).find('.hide').load('pages/001.html');
      jQuery(this).find('.hide').show();

    }); 

    $('.002').click(function(){
      jQuery(this).unbind('click');
      jQuery('.hide').hide();
      jQuery('.show').show();
      jQuery(this).find('.show').hide();
      jQuery(this).find('.hide').load('pages/002.html');
      jQuery(this).find('.hide').show();
    });

したがって、.001をクリックすると、別のjQueryアクション(スライダー)が含まれるページが読み込まれるため、.001をクリックしてバインドを解除する必要があります(したがって、jQuery(this).unbind('click');)、しかし.002をクリックすると、.001をクリックして再バインドする必要があります。これは001から999になる可能性があるため、varsを使用して実行する必要があります。

任意のヒント ?

4

2 に答える 2

2

ハンドラーを何度もバインドおよび再バインドする必要はありません。アクティブ化されたアイテムの識別子をどこかに保存し、各クリックハンドラーで確認します。このような:

var active;
$('.some_class').click(function() {
  if (this.className === active) {
    return false;
  }
  active = this.className;
  ...
});

また、問題のすべてのアイテムのイベントハンドラーとして、外部属性に基づいてアクションをフォークする1つだけの関数を割り当てることを強くお勧めします。このような:

<a class="first" data-url-to-go="/first.html">Some Link</a>
<a class="second" data-url-to-go="/second.html">Some Other Link</a>
...
var active;
$('.first, .second').click(function() {
  if (this.className === active) {
    return false; 
  }
  active = this.className;
  var $this = $(this), 
      url = $this.data('urlToGo');
  ...
});

これは、この概念を説明するJSフィドルです。

于 2012-10-18T14:47:51.020 に答える
-1
for(i=1;i<1000;i++){
    var query_str
    var page_to_load;
    if(i<10){
        query_str = ".00"+i
        page_to_load = "pages/00" + i + ".html"
    }
    else if(i>10 && i<100){
        query_str = ".0"+i
        page_to_load = "pages/0" + i + ".html"
    }
    else{
        query_str = "."+i
        page_to_load = "pages/" + i + ".html"
    }


     $(quer_str).click(function(){
      jQuery(this).unbind('click');
      jQuery('.hide').hide();
      jQuery('.show').show();
      jQuery(this).find('.show').hide();
      jQuery(this).find('.hide').load(page_to_load);
      jQuery(this).find('.hide').show();

    }); 

}

これは良いパフォーマンスではありませんが、これはあなたが求めていたものです

于 2012-10-18T14:37:25.207 に答える