2011-07-19 10 views
0

を発射:アンバインドクリックイベントは、私が欲しいものを行いますが、このコードが実行される1つのjQueryプラグイン場合はJavaScriptコンソールのエラー

dropdown = { 
    doc: $(document), 
    element: $('#user_info'), 
    open: function() { 
     if (! dropdown.element.hasClass('active')) { 
      dropdown.element.addClass('active'); 
      dropdown.doc.one('click', dropdown.close); 
      return false; 
     } 
    }, 
    close: function() { 
     dropdown.element.removeClass('active'); 
    } 
}; 

dropdown.element.click(dropdown.open); 

にはどうすれば削除/独自のカスタム(別のファイルにクリックハンドラをバインド解除/無効にすることができます)Jqueryプラグイン?

私はこのコードを使用していた。

dropdown = { 
    doc: jQuery(document), 
    element: jQuery('#user_info') 
}; 

dropdown.element.click(function(e) { 
    dropdown.element.unbind('click', dropdown.open); 
}); 

を、私は私が欲しいものを得るが、JavaScriptコンソールはこのエラーを示しています

TypeError: Object #<Object> has no method 'unbind'... 

このエラーを回避する方法がある場合は私に知らせてください。

ありがとうございます。

答えて

0

[OK]を、私はそれを得る:

dropdown = { 
    doc: jQuery(document), 
    element: jQuery('#user_info'), 
    open: function() { 
     dropdown.element.addClass('active'); 
     dropdown.doc.one('click', dropdown.close); 
     return true; 
    }, 
    close: function() { 
     dropdown.element.removeClass('active'); 
    } 
}; 

dropdown.element.click(dropdown.open); 
1

Please let me know if there is a way to avoid this error.

あなたの例から、あなたがunbindへの呼び出しでプロパティ名が欠落しているように見えます。これはどういう意味ですか?

dropdown = { 
    doc: jQuery(document), 
    element: jQuery('#user_info') 
}; 

dropdown.element.click(function(e) { 
    dropdown.element.unbind('click', dropdown.open); 
}); 

通知dropdown.element.unbind()。変数dropdownはあなたの例のjQueryオブジェクトではありませんが、dropwdown.elementです。

+0

ザック、ありがとう、私はそれを試して、それdoesnt仕事。しかし、それはちょうど数分前に投稿する答えで魅力的に機能します。 –

+0

あなたはそれがあなたが望むことをしない、あるいはそれでもエラーを生成するということを意味しますか? –

+0

今、エラーなく、私が欲しいものをやります。ありがとう、ザック。 –

関連する問題