2011-07-06 36 views
0

在我的应用程序有一个标记像这些简单和干净的方式来替代在JQuery的ID选择变量值

<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脚本事件处理程序的代码,我检索我使用文本ID元素id选择器为

function DoThis(id){ 

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

} 

并且有数百个地方正在进行字符串连接,如“#”+ somID,这对我来说看起来很糟糕。我想知道是否有某种方式或jQuery的选择器API,如$.id(someID)或什么会避免这种字符串连接?

问候, 哎呀

+0

为什么你不想执行字符串连接? “这对我来说很不好。”为什么? –

+0

真正的问题是你为什么要使用内联处理程序。 Unobtrusive JS是你的朋友。 – prodigitalson

+0

@Boopathi,即使我不喜欢字符串连接..你有什么建议? – JeeZ

回答

2

创建包装:

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

function DoThis(id){ 

    $$(id); 

} 
+0

包装听起来很酷:) – JeeZ

+0

@JeeZ:你也在这里串接。 –

+0

@Boopathi:显然。你想说什么? – user113716

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)相同的方式

+1

+1'getElementById'将是一个很好的方法。 – user113716

相关问题