Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7653035
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T11:55:26+00:00 2026-05-31T11:55:26+00:00

I have a script and it has run into some problems: (function($) { $.fn.extend({

  • 0

I have a script and it has run into some problems:

(function($) {
    $.fn.extend({
        iH: function() {
            $(document).on('mouseenter', this, function(e) {
                alert('this is the element');
            })
        }
    })
})(jQuery);​

then in the body:

$(function(){
    $('.elem').iH();
});

<div class="elem">element</div>

I have created a fiddle HERE

Basically, any ideas how to make the actual element this be the this element in the callback function?

Also, I do not want to use .live() or .delegate() as they have been depreciated.

EDIT:

The reason I wam trying to do this is because I am trying to bind elements that might not already exist in the DOM, IE I could do this:

(function($) {
    $.fn.extend({
        iH: function() {
            $(this).on('mouseenter', function(e) {
                alert('this is the element');
            })
            $(this).live('mouseenter', function(e) {
                alert('Depreciated LIVE function');
            })
        }
    })
})(jQuery);​

however it would not trigger for any elements that are added after the event is bound, but .live() would trigger it:

$('body').append($('<div />').addClass('elem').html('content'));
$('.elem').iH();
$('body').append($('<div />').addClass('elem').html('content'));

Like I said, .live() has been depreciated so I am trying not to use it.

updated fiddle HERE

CLARIFICATION FOR FUTURE REFERENCE

Since the (correct) answer was given, it transpired that the problem was in fact that I was passing a jQuery object to the function. Upon further investigation I discovered that you could, indeed, use the this variable inside the function to point to the affected element(s):

$.fn.extend({
    iH: function() {
        $(document).on('mouseenter', this.selector, function(e) {
            alert($(this).html());
        });
    }
})

$('.elem').iH();
$('body').append('<div class="elem">Value</div>')​

Demo: jsFiddle #3

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T11:55:27+00:00Added an answer on May 31, 2026 at 11:55 am

    Edit: I think I understood your problem. The code seems to work fine in FF but not in IE. The second argument in .on is a selector and it is not working fine when you use this object(at least in IE).

    Try using $(this).selector instead of this. See below,

    Updated DEMO

    $.fn.extend({
        iH: function() {
            $(document).on('mouseenter', $(this).selector, function(e) {
                alert(e.target.className);
            });
        }
    })
    
    $('.elem').iH();
    

    The behavior is correct and this object inside the function is the document object, because the mouse event is bound the document object. However if you want the div element, then you need to use e.target

    DEMO

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a bash script that has this function in it: function start_vi() {
I have a little problem with a simple vbScript. The script has to run
I have a PHP-script originally developed on Ubuntu, which now has to run on
I have a script that has PHP on it, and a link that goes
I have A Script that has a Select statement to go to multiple sub
I have a PHP script that has a runtime of 34 seconds. But it
I have a Bourne Shell script that has several functions in it, and allows
I have a php script that check if the referrer has been cleared after
I have a NAnt script like below: <target name=Init unless=${target::has-executed('Init')}> What I want is
I have a batch script, I think my issue has to do with parentheses

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.