2011-07-06 38 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

相關問題