2013-11-02 116 views
0

可以說我有50個的div ID與Jquery.each()忽略多個命令

<div id="div1"></div> 
<div id="div2"></div> 
<div id="div3"></div> 
<div id="div4"></div> and ... upto  <div id="div50"></div> 

這些div是具有足夠的寬度x高度填充背景色盒。

還有另一個div作爲字符串檢索數據庫數據。它是被正則表達式-ED,以匹配的div ID和適合在一個jQuery選擇

<div id="bookcaldatesci"></div> 

上文DIV的字符串,(innerHTML的)聲明一組的div。因此字符串(innerHTML的)可能是這樣的:

#div1,#div2,#div3,#div1 

我想換一個div的顏色,如果該分區是下文稱超過一次。所以div1的顏色會改變。

問題是jquery.each()忽略每()

我當前的代碼第二DIV1是

$(bookcaldatesci.innerHTML).each(function(i){ 
    var indicator1 = $(this).css('background-color'); 
    if (indicator1 == 'rgb(0, 0, 255)') { 
     $(this).css({ 'background-color': 'rgb(255, 165, 0)' }); 
    } 
    else if (indicator1 != 'rgb(255, 165, 0)') { 
     $(this).css({ 'background-color': 'rgb(0, 0, 255)'; 
    } 
}); 

總之,如果DIV1已經是藍色的,讓它的橙色作爲警告。如果它不是藍色的話就會變藍。

我指出了這個問題 - 我設法返回.each()的結果字符串,然後理解第二個div1在通過.each()時丟失了。我正在尋找一種方法來避免這種情況。所以jQuery忽略我的2nd#div1,他運行.each()命令爲

#div1,#div2,#div3 

刪除最後一個div1。這是我通過.each()測試時返回的字符串。

有什麼我可以做不放棄最後的div1嗎?

編輯- 問題:第一次迭代運行,爲什麼要運行第二次迭代?

答案:如果存在,我還需要它來運行第二次迭代。所以如果有第二次迭代,我需要它來改變顏色(所以它警告我)。該字符串來自數據庫自動化,關於預訂。如果有重疊,應該警告管理員。我使用正則表達式構建字符串,所以字符串與id列表相同,所以我可以在jQuery選擇器中獲取它。

+0

如果存在,我需要它也要運行第二次迭代。所以如果有第二次迭代,我需要它來改變顏色(所以它警告我)。該字符串來自數據庫自動化,關於預訂。如果有重疊,應該警告管理員。我使用正則表達式構建字符串,所以字符串與id列表相同,所以我可以在jQuery選擇器中獲取它。 –

+0

擁有2個或多個具有相同ID的項目是dom錯誤。嘗試使用類來代替。也許這可以解決問題 – sissy

+0

你可以發佈你真正的'html'嗎? –

回答

-1

對於頁面內的每個元素,ID必須是唯一的。因此,您不能在兩個差異div上使用相同的ID。這是什麼導致你的問題。如果你想使用相同的ID來創建div,出於某種原因,我建議你使用一個類。

+0

這些不是兩個不同的divs。我打兩次同一個ID。 –

+0

當你說Id的存儲爲字符串時,你的意思是類似於#div1,#div2,#div3,#div1? – AcidOverflow

+0

否,

#div1,#div2,#div3,#div1

0

通過不同的方法(使用Javascript)

function find_duplicates(arr) { 
var len=arr.length, 
    out=[], 
    counts={}; 

for (var i=0;i<len;i++) { 
var item = arr[i]; 
var count = counts[item]; 
counts[item] = counts[item] >= 1 ? counts[item] + 1 : 1; 
} 

for (var item in counts) { 
if(counts[item] > 1) 
    out.push(item); 
} 

alert(out); 
} 

find_duplicates(bookcaldatesci.innerHTML.split(",")); 

回答發送警報到jQuery選擇,可以得到所期望的結果。

0

在它看起來像你第一眼有一個錯字:

$(bookcaldatesci.innerHTML).each(function(i){ 
    var indicator1 = $(this).css('background-color'); 
    if (indicator1 == 'rgb(0, 0, 255)') { 
     $(this).css({ 'background-color': 'rgb(255, 165, 0)' }); 
    } 
    else if (indicator1 != 'rgb(255, 165, 0)') { 
     $(this).css({ 'background-color': 'rgb(0, 0, 255)'; 
    } 
}); 

在你的第二個測試看againt:「如果這是橙色,使藍色的」