2012-05-17 164 views
2

我有一個腳本,當單擊按鈕時做了很多事情,並且還重命名了一些元素,所以起初我使用第一個腳本,而且我有時看到工作,有時候看不到,所以將其更改爲第二個腳本並且所有的時間都很完美,但是有一個問題。這兩個腳本是否一樣?有什麼區別,而不是我所有的腳本,我只是把第一個替換成第二個。兩個相同的jQuery腳本具有不同的行爲

這是第一個腳本

$(CloneTarget).find(':input[name="' + MainName + '"]').attr('name', NewSelectName); 

和第二單:

$(CloneTarget).find(':input').each(function() { 
    if ($(this).attr('name') == MainName) { 
     $(this).attr('name', NewSelectName); 
    } 
}); 

哪裏是與第一個問題呢?

編輯

而且我用這個:

$(CloneTarget).find(':input[id="' + MainId + '"]').attr('id', NewSelectId); 

而且每一件事工作得很好,我真的很困惑在這裏,不得不提的是MainNameMainId是如此的相似,如:MainName = Model.Phones[0]MainId = Model_Phones[0]是差異大約是.人物還是其他東西?

+0

什麼「不起作用」的第一個腳本? – Joseph

+0

你也可以給HTML部分,只是要清楚。 – Niranjan

+0

@Saeid,'.'字符可能會被誤認爲是類選擇器的開始,但從jQuery 1.7開始看起來並不是這樣。你在使用圖書館的早期版本嗎? –

回答

7

是的,有區別。您的第二個代碼段執行元素的name屬性與值MainName之間的字符串比較。第一個將MainName的值直接注入到Attribute Equals選擇器中。

因此,如果MainName恰好包含的第一個片段會失敗:

  • 一個單引號字符'
  • 雙引號字符"
  • ,需要在選擇轉義字符,例如如[\
+0

這太棒了,我認爲我的'MainName'與您的描述類似,但我使用它沒有任何問題,我更新問題 – Saeid

+0

但是你不應該用這些引號給名稱並將字符轉義爲輸入名稱。這是第一件事。 – Niranjan

+1

@ngen,理論上是的,但是PHP開發人員有時會在組件[something]中命名複選框或單選按鈕,以便服務器端代碼接收包含爲這些元素提交的值的數組。 –

相關問題