Javascript JQuery对TreeNode元素的选择不起作用

Javascript JQuery对TreeNode元素的选择不起作用,javascript,jquery,asp.net,webforms,Javascript,Jquery,Asp.net,Webforms,我一直很难选择IE Web控件树视图的节点。我在IE8兼容模式(IE7标准模式)下运行代码 我正在尝试选择树节点,如下所示: $("tvns\\:treenode").css("color", "red"); <ciswc:TreeView ID="tvWorkArea1" onfocus="fn(this);" ondragstart="javascript:captureNode1();" class="ui-widget ui-widget-content" onclick="

我一直很难选择IE Web控件树视图的节点。我在IE8兼容模式(IE7标准模式)下运行代码

我正在尝试选择树节点,如下所示:

$("tvns\\:treenode").css("color", "red");
<ciswc:TreeView ID="tvWorkArea1" onfocus="fn(this);" 
ondragstart="javascript:captureNode1();" class="ui-widget ui-widget-content" 
onclick="fnStoreEID(0)" 
runat="server"SystemImagesPath="Common/webctrl_client/1_0/treeimages/" 
onunhover="unHoverFunction('WorkArea')" EnableViewState="False" 
onhover="selectNode('Smart');" Height="100%" width="100%">
</ciswc:TreeView>
<tvns:treenode Expanded="True" Selected="true" NavigateUrl="#" NodeData="0">
New Entity:
</tvns:treenode>
我尝试在$(document).ready()函数中使用此选择器,也尝试在树视图填充后按下按钮调用的函数中使用此选择器。两个\退格用于转义冒号字符

TreeView HTML如下所示:

$("tvns\\:treenode").css("color", "red");
<ciswc:TreeView ID="tvWorkArea1" onfocus="fn(this);" 
ondragstart="javascript:captureNode1();" class="ui-widget ui-widget-content" 
onclick="fnStoreEID(0)" 
runat="server"SystemImagesPath="Common/webctrl_client/1_0/treeimages/" 
onunhover="unHoverFunction('WorkArea')" EnableViewState="False" 
onhover="selectNode('Smart');" Height="100%" width="100%">
</ciswc:TreeView>
<tvns:treenode Expanded="True" Selected="true" NavigateUrl="#" NodeData="0">
New Entity:
</tvns:treenode>

我应该注意到,出于某种原因,在运行应用程序的IE开发者工具中,TreeView HTML显示为tvns:TreeView。但它不应影响树中节点的选择

每个节点的外观如下所示:

$("tvns\\:treenode").css("color", "red");
<ciswc:TreeView ID="tvWorkArea1" onfocus="fn(this);" 
ondragstart="javascript:captureNode1();" class="ui-widget ui-widget-content" 
onclick="fnStoreEID(0)" 
runat="server"SystemImagesPath="Common/webctrl_client/1_0/treeimages/" 
onunhover="unHoverFunction('WorkArea')" EnableViewState="False" 
onhover="selectNode('Smart');" Height="100%" width="100%">
</ciswc:TreeView>
<tvns:treenode Expanded="True" Selected="true" NavigateUrl="#" NodeData="0">
New Entity:
</tvns:treenode>

新实体:
当页面最初加载时,树视图存在,但还不存在树节点。稍后,在用户执行了一些操作之后,树视图将由树节点填充

我有一个按钮,它调用一个包含JQuery选择器的函数——我已经通过javascript进行了调试,我可以看到代码函数正在被调用,但它似乎没有找到节点

有什么想法吗

我尝试使用纯javascript选择树节点,但没有返回任何结果:

var nodes = document.getElementsByTagName("tvns:treenode");

for (i = 0; i < nodes.length; i++) {
    nodes[i].style.colour = "red";
}
var nodes=document.getElementsByTagName(“tvns:treenode”);
对于(i=0;i

我注意到HTML具有runat=“server”属性。这就是我不能选择TreeView节点的原因吗

我认为问题在于选择器中的斜杠。您可以尝试向树节点添加虚拟属性,如每个节点上的“数据树节点”。 示例(我没有ie8,使用ie7用户代理在ie11上测试):


新实体:
$(“[数据树节点]”).css(“颜色”、“红色”);
//另一个解决方案
$(“[NavigateUrl][NodeData]”css(“颜色”、“红色”);

您的选择器在IE中是正常的,但是由于某种原因,
.css()
不适用于该对象。
但是
.attr()
工作正常:

alert($("tvns\\:treeview").html());
$("tvns\\:treeview").attr("style", "color: red;");
我的

upd。更好的纯js解决方案:

var els = document.getElementsByTagName("tvns:treeview");
for (i = 0; i < els.length; i++)
{
    els[i].style.color = "red";
}
var els=document.getElementsByTagName(“tvns:treeview”);
对于(i=0;i

我似乎没有正确理解ASP.NET web服务器控件的工作原理

我无法选择这些元素的原因是,它们在DOM中不存在,而且永远不会存在。原因是我使用的IE Web控件(它似乎是ASP.NET 1.0组件)在客户端动态生成树视图(它是用纯Javascript实现的)

树节点中的数据确实存在于DOM中,但它实际上以逗号分隔的格式包含在输入HTML标记的value属性中。我猜这是从服务器返回的,然后由客户端IE Web控件基于此呈现TreeView。我从源代码中看到的内容中假设了很多这方面的知识,因为我无法在线找到此web控件的任何其他文档,可能是因为它太旧了


我目前正在研究用ASP.NET 2.0 System.Web.UI.WebControl.Treeview替换IE Web控件的可行性。我对此做了一些实验,这次似乎是在服务器端而不是客户端生成HTML,因此生成的HTML在页面的HTML DOM中可用,因此我可以选择树节点并对它们执行我想要的操作

您可以发布一个由树生成的html示例吗?可能只是Selectory的问题您的JQuery选择器与您的html输出几乎不对应。@SamiRacho,上面的树节点是树生成的html的一个示例。我上面发布的示例是树列表中的第一个。其他树节点没有明显不同。@Enam,选择器如何与HTML输出不对应?打开internet Explorer开发工具(F12)并发布在客户端上生成的HTML示例。您在visual studio上看到的aspx代码不一样。您好,Enm,css函数在IE8中为页面其他位置的元素着色(使用类选择器)时工作得很好(我忘了提到我使用的浏览器是IE8兼容模式和IE7标准文档模式)。我将尝试使用javascript选择元素,但我需要JQuery选择器,因为我试图使用JQuery UI-$(“tvns\\treeview”).draggable()使树节点可拖动。我更改CSS的原因只是为了看看我是否有正确的选择器。因此,您的帖子帮助我看到我的选择器是正确的,所以问题一定是JQuery可拖动API。谢谢,我刚刚测试过,树节点的颜色没有改变!它似乎仍然无法选择treenode,尽管选择器显然是正确的!你知道还有什么问题吗?在IE调试工具中,我可以看到“脚本”选项卡中的节点,它们肯定在那里,但在应用CSS或添加JQ可拖动功能时,节点中没有任何更改。@CiaranGallagher上面的注释中的选择器$(“tvns\\treeview”)中有一个打印错误-缺少冒号。不幸的是,不过,我无法控制树节点上属性的创建,因为它是使用IE Web控件(一个非常古老的组件)生成的。(更新了我的答案),然后使用类似$(“[NavigateUrl][NodeData]”的东西。css(“颜色”,“红色”);