2013-05-25 3 views
0

До сих пор код у меня есть:Как использовать функцию preventDefault() в названной функции?

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

Вы можете принять параметр event в «имени функции»:

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

Он будет передан поведениюРедактировать, когда вы установите событие h ок ументы как в

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

Как в стороне: это быстрее использовать $('#behaviour') чем $('a#behaviour').

+0

Привет, и спасибо за ответ. Таким образом, трюк состоит в том, чтобы не передавать событие в функции bind(). Хорошо. Мне кажется, что это странно, но неважно. Пока это работает! –

+0

Это не очень странно: идея состоит в том, что вы передаете функцию 'bind', и что' bind' вызывает функцию и предоставляет аргумент. Функция передается с использованием ее имени. –

0

Просто поместите возвращаемое значение как ложное, как

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

вы также можете использовать predefault метод в названных функций также

function behaviourRemove (e){ 
    e.preventDefault(); 
    -------- 
} 
Смежные вопросы