Javascript 在叶节点上设置单击事件
我有这种类型的html:-Javascript 在叶节点上设置单击事件,javascript,xslt,Javascript,Xslt,我有这种类型的html:- <ul> <li>Activities<ul> <li>Physical1<ul> <li>Cricket<ul> <li>One Day</li> </ul> </li> </ul> <
<ul>
<li>Activities<ul>
<li>Physical1<ul>
<li>Cricket<ul>
<li>One Day</li>
</ul>
</li>
</ul>
</li>
<li>Test1<ul>
<li>Test At Abc</li>
</ul>
</li>
<li>Test2<ul>
<li>Test At Xyz</li>
</ul>
</li>
</ul>
</li>
</ul>
<br>
- 活动
- 物理1
- 板球
- 总有一天
- 测试1
- Abc考试
- 测试2
- 在Xyz测试
这是我加载xml文件和xslt的完整代码。并使用xslt获取ul li列表。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
<script>
var xml = loadXMLDoc("abc.xml");
var xsl = loadXMLDoc("a.xsl");
function loadXMLDocActiveX(location) {
var doc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
doc.async = false;
doc.load(location);
return doc;
}
function loadXMLDocOther(location) {
xhttp = new XMLHttpRequest();
xhttp.open("GET", location, false);
xhttp.send("");
return xhttp.responseXML;
}
function loadXMLDoc(dname) {
if (window.ActiveXObject) {
return loadXMLDocActiveX(dname);
}
else if (window.XMLHttpRequest) {
return loadXMLDocOther(dname);
}
}
function transformActiveX(xml, xsl, target, selected) {
var transform = new ActiveXObject("MSXML2.XSLTemplate");
transform.stylesheet = xsl;
var processor = transform.createProcessor();
processor.input = xml;
if (selected) {
processor.addParameter("selected", selected);
}
processor.transform();
target.innerHTML = processor.output;
}
function transformOther(xml, xsl, target, selected) {
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
if (selected) {
xsltProcessor.setParameter(null, "selected", selected);
}
var resultDocument = xsltProcessor.transformToFragment(xml, document);
target.innerHTML = "";
target.appendChild(resultDocument);
}
function displayResult() {
var targetElement = document.getElementById("load");
// code for IE
if (window.ActiveXObject) {
transformActiveX(xml, xsl, targetElement);
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation &&
document.implementation.createDocument) {
transformOther(xml, xsl, targetElement);
}
}
</script>
</head>
<body onload="displayResult()">
<div id="load">
</div>
</body>
</html>
无标题页
var xml=loadXMLDoc(“abc.xml”);
var xsl=loadXMLDoc(“a.xsl”);
函数loadXMLDocActiveX(位置){
var doc=新的ActiveXObject(“MSXML2.FreeThreadedDOMDocument”);
doc.async=false;
单据加载(位置);
退货单;
}
函数loadXMLDocOther(位置){
xhttp=newXMLHttpRequest();
xhttp.open(“GET”,位置,false);
xhttp.send(“”);
返回xhttp.responseXML;
}
函数loadXMLDoc(dname){
if(window.ActiveXObject){
返回加载xmldocactivex(dname);
}
else if(window.XMLHttpRequest){
返回载荷xmldocother(dname);
}
}
函数转换ActiveX(xml、xsl、目标、选定){
var transform=newActiveXObject(“MSXML2.XSLTemplate”);
transform.stylesheet=xsl;
var processor=transform.createProcessor();
processor.input=xml;
如果(选定){
processor.addParameter(“已选择”,已选择);
}
processor.transform();
target.innerHTML=processor.output;
}
函数transformOther(xml、xsl、target、selected){
var xsltProcessor=new xsltProcessor();
导入样式表(xsl);
如果(选定){
xsltProcessor.setParameter(null,“已选择”,已选择);
}
var resultDocument=xsltProcessor.transformToFragment(xml,文档);
target.innerHTML=“”;
target.appendChild(resultDocument);
}
函数displayResult(){
var targetElement=document.getElementById(“加载”);
//IE代码
if(window.ActiveXObject){
transformActiveX(xml、xsl、targetElement);
}
//Mozilla、Firefox、Opera等的代码。
else if(文件、实施和
document.implementation.createDocument){
transformOther(xml、xsl、targetElement);
}
}
我想在单击叶节点时设置“单击叶节点”,其文本在我的
e、 g:-
单击One Day
它在那里的最后一个子项have not child,然后将它的文本复制到div
标记中。
怎么可能。。。 我认为它与jquery函数click一起工作。
谢谢 这将选择没有子项的所有li。然后只需附加单击事件。(假设为有效的HTML)
这将选择没有子项的所有li。然后只需附加单击事件。(假设为有效的HTML)
听起来您需要修改HTML,无论如何,请尝试以下方法:
$('li:not(:has(*))。单击(function(){
$('#result').text($(this.text());
});
听起来您需要修改HTML,无论如何,请尝试以下方法:
$('li:not(:has(*))。单击(function(){
$('#result').text($(this.text());
});
这是无效的htmlPutting在问题的每个句子末尾添加标点符号将使问题更容易理解。如果你不愿意这样做,那么愿意提供帮助的人就会减少。这是无效的。在问题的每个句子末尾加标点符号会使问题更容易理解。如果您不愿意这样做,那么愿意提供帮助的人就会减少。我认为OP希望div在列表之外,而不是在取消单击的节点中。我认为OP希望div在列表之外,而不是在取消单击的节点中。
$('li:not(:has(*))').click(.....)
$('li:not(:has(*))').click(function(){
$('#result').text($(this).text());
});
<div id="result"></div>