在JQuery id选择器中替换变量值的简化和干净方法

时间:2011-07-06 02:19:28

标签: jquery

在我的申请表中,我有这样的标记

    <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>

并且在java脚本事件处理程序代码中我必须检索textId元素,我使用id选择器作为

function DoThis(id){

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

}

并且有数百个地方正在进行字符串连接,例如“#”+ somID,这对我来说很糟糕。我想知道是否有一些方法或jquery选择器API,如$.id(someID)或某些东西,以避免这种字符串连接?

此致 哎呀

2 个答案:

答案 0 :(得分:2)

创建一个包装器:

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

function DoThis(id){

    $$( id );

}

答案 1 :(得分:2)

为了避免字符串连接,您可以使用比jQuery css id选择器更快的本机函数。

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

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

工作示例: http://jsfiddle.net/ZdeBt/

修改

您也可以使用前一个答案,$$很酷..

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

通过这种方式,您仍然可以获得一个jQuery对象(数组),您可以使用与$(“#”+ id)相同的方式