Как применить несколько событий к одной и той же функции - PullRequest
3 голосов
/ 18 августа 2010

Я не лучший в этом JQuery вещи. Но я пытаюсь отделить действие от функции, чтобы я мог применить несколько событий, которые вызывают одну и ту же функцию. К сожалению, это не работает. Кто-нибудь знает почему?

Обновленная функция, но все еще ошибки

$(document).ready(function() {

var $info_items = jQuery('.checkbox.has_info, .has_info');

$info_items.click(function(event) {
$(this).show_text(event);
});


// I suspect it has something to do with this initalizer of the function here 

jQuery.fn.show_text = function(event){
  var $info_item = jQuery(this);
  $info_items.filter(function(index){
    return $(".hidden_text").css("display","block");
    }).not($info_item).parent().next().next().hide("slow");
  $info_item.parent().next().next().show("fast");
});

});

Ответы [ 3 ]

7 голосов
/ 18 августа 2010

Что такое e, событие?Вам необходимо присвоить аргумент события функции click(), чтобы использовать ее.Кроме того, чтобы вызвать show_text таким образом, чтобы он имел this, вам нужно вызвать его для элемента:

$info_items.click(function (event) {
  // 'this' is the element in $info_items which was clicked

  // invoke show_text on the element in question
  $(this).show_text(event);
});

У вас также есть дополнительные ) в вашей последней строке });.

2 голосов
/ 18 августа 2010

Вы ищете что-то подобное?

var handle = function(event) {
  $(event.currentTarget).show_text(event);
};
$info_items.bind('click blur', handle);
2 голосов
/ 18 августа 2010

Вы можете использовать jQuery bind, чтобы прикрепить несколько событий к одной функции.

$('#whatever').bind('mouseover focus click', function() {
   your_custom_function();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...