转换扫描对于className JavaScript块以使用jQuery

我有一个小块我想转换为使用jQuery用于几个不同的目的,但主要是逆向工程如何工作来提高我的jQuery技能。 我尝试了一下,但无法弄清楚所有的转换。

以下Javascript块迭代通过ASP.NET TreeView控件客户端呈现的复选框,并扫描带有className=disabledTreeviewNode复选框(此等效function无法实现纯粹的服务器端)。

  function DisableCheckBoxes(treeviewClientID) { var treeView = document.getElementById(treeviewClientID); if (treeView) { //Get all the checkboxes which are 'inputs' in the treeview var childCheckBoxes = treeView.getElementsByTagName("input"); //Iterate through the checkboxes and disable any checkbox that has a className="disabledTreeviewNode" for (var i = 0; i < childCheckBoxes.length; i++) { var textSpan = childCheckBoxes[i].parentNode.getElementsByTagName("span")[0]; if (textSpan != null && textSpan.firstChild) if (textSpan.className == "disabledTreeviewNode" || textSpan.firstChild.className == "disabledTreeviewNode") childCheckBoxes[i].disabled = true; } } } 

我尝试更改以下内容:

 var treeView = document.getElementById(treeviewClientID); 

 var treeView = $('#' + treeviewClientID); 

然而,我再也无法调用getElementsByTagName 。 我试图使用jQuery等效的.find然后代码开始表现不同而且我有点迷失。

谁能协助转换这个小块来使用jQuery? 欢迎评论是否值得,或者即使有更好的方法。

编辑:此类class=disabledTreeviewNode被分配服务器端,如下所示:

 tn.Text = "" + tn.Text + ""; 

这是一个hack / flag,所以客户端代码可以读取它并设置它的父级 ,这是disabled的复选框。 父母为什么? 我不能直接在代码中的复选框上设置类,因为该属性不可访问。 hack:将TreeView对象的.Text为具有值,然后将其父级(复选框)设置为禁用客户端。

许多jQuery对象的方法在场景后面调用.each()方法,所以你不必遍历集合,jQuery为你做这个。

 $('#' + treeviewClientID + ' input').filter(function() { return $(this.parentNode).find('.disabledTreeviewNode').length; }).prop('disabled', true); 
 $('#' + treeviewClientID + ' span:has(.disabledTreeviewNode) input') .prop('disabled', true);