0

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

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

因此,欢迎任何帮助。

4

2 回答 2

4

您可以接受event“命名函数”中的参数:

function behaviourRemove (event){
   event.preventDefault();

当您将事件处理设置为

$('a#behaviour').bind('click', behaviourRemove);

顺便说一句:它使用起来$('#behaviour')$('a#behaviour').

于 2013-05-25T10:00:14.333 回答
0

只需将返回值设置为 false 即可

function behaviourAdd (){
    return false;
    -------------
}

您也可以在命名函数中使用 predefault 方法

function behaviourRemove (e){
    e.preventDefault();
    -------- 
}
于 2013-05-25T09:59:34.050 回答