如何在命名函数中使用preventDefault()?

时间:2013-05-25 09:58:38

标签: jquery

到目前为止,我的代码是:

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();
    ...
}

所以欢迎任何帮助。

2 个答案:

答案 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();
    -------- 
}