admin管理员组

文章数量:1334174

I'm not the best at this jquery stuff. But I'm trying to seperate the action from the function so I can apply multiple events that cause the same function. Unfortunately this isn't working. Anyone know why?

Updated Function, but still errors

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

});

I'm not the best at this jquery stuff. But I'm trying to seperate the action from the function so I can apply multiple events that cause the same function. Unfortunately this isn't working. Anyone know why?

Updated Function, but still errors

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

});
Share Improve this question edited Aug 18, 2010 at 18:28 Trip asked Aug 18, 2010 at 18:12 TripTrip 27.1k48 gold badges162 silver badges281 bronze badges 1
  • Please use a better subject line next time. Perhaps something like "How to apply multiple events to the same function". – Bart Commented Aug 18, 2010 at 18:18
Add a ment  | 

3 Answers 3

Reset to default 7

What is e, the event? You need to name the event argument to the click() function to use it. Also, to invoke show_text such that it has a this, you need to invoke it on an element:

$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);
});

You also have an extra ) on your final }); line.

You can use jQuery bind to attach several events to a single function.

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

Are you looking for something like this?

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

本文标签: javascriptHow to apply multiple events to the same functionStack Overflow