2012-07-17 93 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