2013-08-25 52 views
1

好吧,所以這可能有點尷尬解釋。 我的函數被賦予一個元素來定位,並使用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/

+0

甲'+'標誌不處於'id'有效字符,反正反斜線。 'ID和NAME標記必須以字母([A-Za-z])開頭,後面跟着任意數量的字母,數字([0-9]),連字符(「 - 」),下劃線(「_」 ),冒號(「:」)和句號(「。」)。「這是不好的設計,改變它。 – MasterAM

+0

@MasterAM在HTML5中不再這樣,請參閱http://www.w3.org/html/wg/drafts/html/master/dom.html#the-id-attribute – bfavaretto

+1

那麼,爲什麼不繼續使用getElementById/getElementsByClassName,就像你在第一行所做的那樣(或者嘗試querySelect/querySelectorAll),然後將結果元素包裝在jQuery對象中? – bfavaretto

回答

1

逃逸+/ 1個反斜槓並用2個反斜槓

+0

替換不起作用,因爲它們有可能不止一次出現。如果我要走這條路線,我想我需要全局正則表達式,而且我不確定這是否會起作用。我試圖在類名中使用存儲的字符串,並且afaik應該將轉義字符讀爲常規字符。我不是100%肯定這不是一個jQuery錯誤,而不僅僅是上下文不合需要的操作。 –

+0

http://jsfiddle.net/doktormolle/TwzCB/ –

+0

感謝您的小提琴,我不確定它是否只是我,我無法在您的代碼中應用您的示例。我敲了一把小提琴,它與我實際上做的很不一樣,也許它會有所幫助。 http://jsfiddle.net/RpVr2/基本上,所有你需要知道的是,當你點擊!在一個ID旁邊,所有具有該ID的容器都應該消失,但是你可以看到ID中帶有+的那些容器沒有。感謝你的幫助。 –