好吧,所以這可能有點尷尬解釋。 我的函數被賦予一個元素來定位,並使用innerHTML在元素中顯示一個ID。那個ID也出現在一個班級的名字裏,這個名字也必須是有針對性的。但是,ID有可能包含「+」,「/」或「\」字符,這會阻止jQuery能夠在變量中使用ID。變量中的運算符字符停止jQuery定位
編輯:我忽略提及,當我說ID時,這不是一個elemnt ID。這是一個用戶ID,我可以用它定位多個元素,因爲它出現在類名稱和頁面上。
下面的代碼:
function goFilt(filtID) {
var ptbf = document.getElementById("pc" + filtID);
var ptbfIdc = ptbf.getElementsByClassName("hand");
var ptbfId = ptbfIdc[0].innerHTML;
ptbf.className = 'animated hinge';
setTimeout(function() {
$q("#pc" + filTar).animate({
height: "1px"
}, 500);
}, 1000);
setTimeout(function() {
$q("#pc" + filTar).css("display", "none");
}, 1500);
setTimeout(function() {
$q(".id_" + ptbfId).parent().parent().parent().parent().animate({
opacity: 0
}, 500);
setTimeout(function() {
$q(".id_" + ptbfId).parent().parent().parent().parent().animate({
height: "1px"
}, 500);
}, 500);
}, 1500);
setTimeout(function() {
$q(".id_" + ptbfId).parent().parent().parent().parent().css("display", "none");
}, 2500);
}
所以說,我們的ID是VmOR + MU8。 我們通過將類名稱爲「hand」的元素與內部html進行比較,並將其保存爲變量ptbfId。 然後我們需要使用類id_VmOR + MU8來指定元素,但是我們不能使用$ q(「。id_」+ ptbfId),因爲ID中的「+」會停止工作。 這是我的問題。與正則表達式的一個愚蠢的週轉短缺,我想不出如何解決這個問題。在該點之後,ID也需要可用,所以如果答案是交換臨時錯誤字符,那麼它需要快速交換。
你們有什麼幫助嗎?
編輯2:例如小提琴:http://jsfiddle.net/RpVr2/
甲'+'標誌不處於'id'有效字符,反正反斜線。 'ID和NAME標記必須以字母([A-Za-z])開頭,後面跟着任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」 ),冒號(「:」)和句號(「。」)。「這是不好的設計,改變它。 – MasterAM
@MasterAM在HTML5中不再這樣,請參閱http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute – bfavaretto
那麼,爲什麼不繼續使用getElementById/getElementsByClassName,就像你在第一行所做的那樣(或者嘗試querySelect/querySelectorAll),然後將結果元素包裝在jQuery對象中? – bfavaretto