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

  • SEARCH
  • Home
  • 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 8147805
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 6, 20262026-06-06T14:28:27+00:00 2026-06-06T14:28:27+00:00

I have a JQuery plugin function where I would like to assign selectors from

  • 0

I have a JQuery plugin function where I would like to assign selectors from an iframe just once, and then use them throughout the plugin.

In the basic example below, if I have a function within the plugin it won’t work for the $modal selector unless I explicitly set it within the function.

Is there any way to do this so that I can assign the selector to a variable just once and have it accessible throughout the plugin function?

jQuery.customPlugin = function() {


    var $modal = $('#modal', frames['admin-bar'].document);


    $('#hide-modal').click(function(){

        hide_modal();

    });

    // doesn't work - but I want it to somehow
    function hide_modal(){

        $modal.hide();

    }

    // works, but requires lots of re-querying if I have lots of selectors/functions
    function hide_modal(){

        var $modal = $('#modal', frames['admin-bar'].document);
        $modal.hide();
    }

});
  • 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-06-06T14:28:29+00:00Added an answer on June 6, 2026 at 2:28 pm

    jQuery selectors query the DOM when you instantiate them. In other words, if you do var $foo = $('.bar'), and then add a new element with class “bar” to the page, your $foo variable won’t include it. This is just how jQuery works.

    What you can do is write a method get$Modal, which re-queries every time you run it. For instance:

    function get$Modal() {
        return $('#modal', frames['admin-bar'].document);
    }
    // Should work
    function hide_modal(){
        get$Modal().hide();
    }
    

    Alternatively, what you can also do is “register” your modals as you create them, avoiding the need to re-query. Something like:

    var $modals = $('.modal');// start with any existing modals
    function createModal() {
        var $modal = generateModal();
        modals.add($modal); // add any newly created modals
    }
    
    // Should work
    function hide_modal(){
        $modals.hide();
    }
    

    That should work great if you have a common place where all modals are created. If you create modals in many different places, you might want to use a custom event to organize things:

    var $modals = $('.modal');// start with any existing modals
    $(document.body).on('newModal', function(e, $newModal) {
        $modals.add($newModal);
    })
    
    function createModalPlace1() {
        var $modal = generateModal();
        $(document.body).trigger('newModal', $modal)
    }
    
    function createModalPlace2() {
        var $modal = generateModalSomeOtherWay();
        $(document.body).trigger('newModal', $modal)
    }
    
    function createModalPlace3() { // etc.
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am using jQuery ColorPicker Plugin and I would like to use this multiple
I have this jquery plugin that zooms in on photos, but I would like
I'm using the Edit-in-Place JQuery plugin, JEditable: http://www.appelsiini.net/projects/jeditable . I would like to use
I have the following home-grown jquery plugin: (function($) { $.fn.defaultButton = function(button) { var
I have a jQuery plugin I am trying to add a callback function for.
If I have a jQuery plugin using the normal standard of: (function( $ ){
I have a function called Colorbox (jQuery plugin) that takes a number of parameters
If I want to have a publicly accessible function on a jQuery plugin I'm
I have a plugin that looks like this: (function($) { $.fn.plugin_name = function(options) {
I am working on a jQuery plugin and I would like for the user

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.