2012-07-17 95 views
0

我有這個代碼,但我不知道如何將它轉換爲jQuery,因爲我正在使用check變量來查看if聲明中的內容是否至少發生過一次。 gph_img_list是許多單選按鈕的名稱標籤。如何將此javascript轉換爲jquery?

var check = false; 
    for (var i=0; i < gph_img_list.length; i++) { 
     if (gph_img_list[i].value == var_gph_img.innerHTML) { 
      gph_img_list[i].checked = true; 
      check = true;    
      break; 
     } 
    } 
    if (!check) { 
     var_gph_img.innerHTML = ""; 
    } 
+4

你是什麼意思'將其轉換爲jQuery'?如何/爲什麼要將bool變量轉換爲jQuery? – glosrob 2012-07-17 19:08:52

+2

你可以添加HTML嗎? – 2012-07-17 19:08:54

+0

var_gph_img屬於什麼? – Lance 2012-07-17 19:09:26

回答

0

使用filter功能...

​var check = $(gph_img_list).filter(function (index, element) { 
    return element.value === var_gph_img.innerHTML; 
}).first().attr("checked", true).length > 0; 

if (!check) { var_gph_img.innerHTML = ""; } 

這裏是一個fiddle在沒有選中複選框,因爲文本匹配。 (更改的「a」在div到X,Y或Z看出差別)

這裏是一個fiddle那裏是檢驗一個複選框,因爲文本確實比賽。

+0

OP的代碼僅設置要檢查的第一個匹配項目。您的代碼將設置所有匹配項目進行檢查。 – jfriend00 2012-07-17 19:24:16

+0

你需要仔細看看OP的代碼是幹什麼的。你的代碼不完成相同的事情。您的代碼現在不檢查任何項目並清除錯誤項目上的HTML。 – jfriend00 2012-07-17 19:42:49

+0

它仍然設置多個項目進行檢查。 OP的代碼僅設置要檢查的第一個匹配項目。 – jfriend00 2012-07-17 20:17:18

1

我不知道你這個轉換爲jQuery的得到什麼,而是基於你已經證明什麼,這應該使用jQuery在實際可行完成相同的任務:

var text = $(var_gph_img).html(); 
var check = false; 
$(gph_img_list).each(function() { 
    if (this.value == text) { 
     check = true; 
     $(this).prop("checked", true); 
     return(false); // stop the .each() loop 
    } 
}); 
if (!check) { 
    $(var_gph_img).html(""); 
} 

如果您想要更高效地完成這項工作,您必須向我們展示您的HTML,以便我們可以設計jQuery選擇器來完成大部分工作。

+0

@BartRiemens:OP特別要求提供jQuery,所以我想這就是爲什麼它被用在答案中提到的「實際上」的原因。我覺得你的編輯帶走了它(即使你的編輯使事情變得更有效率)。雖然我猜如果jfriend00不介意,我的反對意見是沒有意義的。 – 2012-07-17 20:59:07

+1

@BartRiemens - 我回滾了你的編輯。我認爲你不應該只是批發改變我的代碼。編輯通常是爲了修正錯誤或增加澄清,而不是強加於如何編寫代碼的意見。您可以自由撰寫自己的答案或提出改進我的代碼的意見,我會根據您的反饋決定是否更改我的答案。做出這麼多改變也是有點鬼鬼祟祟的,甚至沒有對你做什麼和爲什麼發表評論。如果科林沒有評論,我可能沒有看到編輯。感謝主席科林。 – jfriend00 2012-07-17 21:20:50

+0

Np。令人驚訝的是,該編輯獲得了兩張贊成票。 – 2012-07-18 03:31:50