Jeevan
Jeevan

Reputation: 8772

simplified and clean way to substitute variable values in JQuery id selector

In my application I have a mark up like these

    <div id="divLeft" style = " width: 300px; border: 1px solid red; float: left" onclick="DoThis('textId')"> 
          <input type="text" id="textId" />
    </div>
    <div id="divRight" style = " width: 600px; border: 1px solid red; float: right" onclcick="DoThat()">    
    </div>

and in the java script event handler code I have to retrieve textId element for which i use the id selector as

function DoThis(id){

//some code goes here
$("#"+id).show();
//some code goes here

}

and there are hundreds of places where am doing string concatenation like "#"+somID, this looks bad to me. I wanted to know is there some way or jquery selector API like $.id(someID) or something which would avoid this string concatenation?

Regards, Jeez

Upvotes: 0

Views: 675

Answers (2)

Boopathi Rajaa
Boopathi Rajaa

Reputation: 4729

To avoid string concatenation, you could use the native function that is faster than jQuery css id selector.

jQuery.extend({
    byId: function(id) {
      return jQuery(document.getElementById(id));
    }
});

Usage and Possibility:
$.byId("foo").some_other_jQuery_method();

Working example: http://jsfiddle.net/ZdeBt/

Edit:

You could also have something like the previous answer, using $$ is cool ..

function $$(id) {
  return jQuery(document.getElementById(id));
}
//and
$$("foobar").html("Hey!. Im able to access it");

In this way, you will still get a jQuery object(array) which you can use in the same way as $("#"+id)

Upvotes: 2

user113716
user113716

Reputation: 322462

Create a wrapper:

var $$ = function( id ) { return jQuery('#' + id); };

function DoThis(id){

    $$( id );

}

Upvotes: 2

Related Questions