これまでのところ、私が持っているコードは次のとおりです。
function behaviourAdd (){
$.ajax({
url: base_url + "folders/jq_set_folder_as_behaviour/add/" + $("a#behaviour").data("folder"),
success: function () {
$('a#behaviour')
.addClass('active')
.attr('title', "Remove a Behaviour")
.unbind('click')
.bind('click', behaviourRemove);
}
});
}
function behaviourRemove (){
$.ajax({
url: base_url + "folders/jq_set_folder_as_behaviour/remove/" + $("a#behaviour").data("folder"),
success: function () {
$('a#behaviour')
.removeClass('active')
.attr('title', "Add a Behaviour")
.unbind('click')
.bind('click', behaviourAdd);
}
});
}
if($('a#behaviour').hasClass('active') == true) {
$('a#behaviour').bind('click', behaviourRemove);
} else {
$('a#behaviour').bind('click', behaviourAdd);
}
すべてが完璧に機能します。ただし、デフォルトのクリック動作を防止しようとしていますが、試したことはすべて失敗します。
多くの検索の後、私が見つけることができる唯一のコンテキストは次のとおりです。
$("a#behaviour").click(function(event){
event.preventDefault();
});
名前付き関数を使用しているため、これは私には当てはまりません。これが機能しない理由だと思います。
イベントデータを渡すことはできますが:
$('a#behaviour').bind('click', behaviourRemove(event));
いずれかの関数内で使用するとすぐにエラーが発生します。
function behaviourAdd (e){
e.preventDefault();
...
}
だからどんな助けも大歓迎です。