Search code examples
javascriptmethodsargumentsparentheses

Javascript: How to pass an argument to a method being called without parentheses


Sorry for how stupid this is going to sound. My JS vocabulary is terrible and I had absolutely no idea what to search for.

I'm using jQuery.

So I've got this code:

var example = {
    open: function(element){
       alert(element.text());
    },
    init: function(){
        $("a").click(example.open);
    }
};

$(document).ready(function(){example.init();)

So here's the problem: I want to pass an argument to example.open() when I click the "a" element. It doesn't seem like I can, though. In order for the example.open method to just…exist on page-load and not just run, it can't have parentheses. I think. So there's no way to pass it an argument.

So I guess my question is…how do you pass an argument to a function that can't have parentheses?

Thanks so much.


Solution

  • Insert another anonymous function:

    var example = {
        open: function(element){
           alert(element.text());
        },
        init: function(){
            $("a").click(function()
            {
              example.open($(this));
            });
        }
    };
    

    You can also try this version because jQuery set the function's context (this) to the DOM element:

    var example = {
        open: function(){
           alert($(this).text());
        },
        init: function(){
            $("button").click(example.open);
        }
    };