2017-10-16 9 views
1

ボタンをクリックすると、クリックイベントのバインドを解除して別のクリックイベントをアタッチしようとしています。クリックイベントのバインドを解除して新しいイベントを添付しようとしました

<small id="selectall_agriculture" onclick="refineSearch.testing('agriculture')">(select all)</small> 

テスト機能が実行された後、私は実行するためにselectAllPropertyTypesInGroup()関数をしたいが、その代わりに、テスト関数が毎回呼ばれます。小さなタグからonclickイベントを取り出し、別のフロントエンドコントロールからsetGroupHeaderNotAllSelected()をトリガーすると、setGroupHeaderNotAllSelected()関数の$( '#selectall_' + groupName).click()で作成されたクリックイベントが機能します。クリックイベントが小さなタグにハードコードされているため、アンバインドが機能していないようです。助言がありますか? unbind方法が推奨されませんjQuery docパー

refineSearch.testing = function (groupName) { 
    console.log("Click event from front end running instead of the one binded"); 
    setGroupHeaderNotAllSelected (groupName); 
}; 

var setGroupHeaderNotAllSelected = function (groupName) { 
    $('#selectall_' + groupName).unbind('click'); 
    $('#selectall_' + groupName).click(function() { 
     selectAllPropertyTypesInGroup(groupName); 
     return false; 
    }); 
}; 
+0

変更.click、バインドのために( 'onclick'属性を削除し –

+1

?「クリック」し、代わりに控えめなJSを使用してイベントをアタッチ –

+0

@RoryMcCrossan私は、 'off()'がインラインイベントハンドラをアンバインドできるとは思っていません(例えば、jQueryの 'on()')、 'off()'を使用して新しいイベントを削除してください。しかし、あなたは 'onclick'属性をヌルに設定することで効果的にバインドを解除することができます。 – gforce301

答えて

1

は、(clickは結構ですが、あなたはまた、look aton方法があります)の代わりにoffを使用する。また

$('#selectall_' + groupName).off('click').click(function() { 
    selectAllPropertyTypesInGroup(groupName); 
    return false; 
}); 

、あなたは、宣言onclick属性セットとの間で選択する必要がありますjQueryバインディング。だからではなく、onclick属性は使用上、私は、Appでスクリプトを経由してhanlderを追加開始する

$('#selectall_agriculture').click(function() { 
    refineSearch.testing('agriculture'); 
}); 
関連する問題