如何将多个事件应用于同一个函数

时间:2010-08-18 18:12:23

标签: javascript jquery oop function

我不是这个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 个答案:

答案 0 :(得分:7)

活动是什么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);
});

您的最终)行还有一个额外的});

答案 1 :(得分:2)

您可以使用jQuery bind将多个事件附加到单个函数。

$('#whatever').bind('mouseover focus click', function() {
   your_custom_function();
});

答案 2 :(得分:2)

你在找这样的东西吗?

var handle = function(event) {
  $(event.currentTarget).show_text(event);
};
$info_items.bind('click blur', handle);