转换扫描对于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);