到目前为止,我的代码是:
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();
...
}
所以欢迎任何帮助。
答案 0 :(得分:4)
您可以接受“命名函数”中的event
参数:
function behaviourRemove (event){
event.preventDefault();
当您在
中设置事件处理时,将提供行为删除$('a#behaviour').bind('click', behaviourRemove);
顺便说一句:使用$('#behaviour')
比使用$('a#behaviour')
更快。
答案 1 :(得分:0)
只需将返回值设为false,如
function behaviourAdd (){
return false;
-------------
}
你也可以在命名函数中使用预定义方法
function behaviourRemove (e){
e.preventDefault();
--------
}