2017-07-11 63 views
0

有沒有什麼辦法可以避免在Jquery中重複「selector」? 我需要在JavaScript中使用「this」關鍵字,我不想聲明 另一個變量,因爲在這種情況下,如果我有很長的 代碼,我必須聲明很多。 例如:Jquery中選擇器的簡寫

if ($(obj).parent().find(".ValidationErrors").length && 
    $(obj).parent().find(".ValidationErrors").text().indexOf("Max") < 0) { 
    return false; 
} 

回答

6

考慮您的代碼示例有創建一個變量來保存引用您的.ValidateErrors元素沒有真正的替代品。但是,您可以縮短return以僅包含條件的結果。試試這個:

var $errors = $(obj).parent().find(".ValidationErrors") 
return !($errors.length && $errors.text().indexOf("Max") < 0); 

事實上length檢查是多餘的,因爲jQuery將來自text()返回一個字符串,即使元素不存在,那麼邏輯可以進一步縮短,只是:

return $(obj).parent().find(".ValidationErrors").text().indexOf("Max") != -1; 
+0

如果這種方式效率不高,請問我可以回答我: if((error = $(obj).parent()。find(「。ValidationErrors」))。) – user7267363

+0

I' d更關心邏輯的一種語法而不是效率。我對你使用'error'感到困惑。在條件中將它設置爲等於「length」非常奇怪,特別是當你調用remove()時,就好像它是一個jQuery對象 –