我有以下html: -
<span id="event">
<ul>
<li>Activities
<ul>
<li>Physical1
<ul>
<li>Cricket
<ul><li>One Day</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</span>
<div id="activity"></div>
我想使用jquery点击功能
在每个li上设置click事件
它工作得很完美,但我想在#activity
div中设置这个li文本
这是我尝试过的:
$("#event ul li").live("click", function(event){
event.stopPropagation();
alert($(this).text());
$("#activity").append($(this).text());
return false;
});
现在问题当我点击它时它会附加div中的所有li文本,我只想点击li文本。
当点击li
时,文字附加在div
标签中,例如: - 点击Cricket,然后在点击一天附加在div上时,cricket附加在div中...
我该怎么做? 感谢。
答案 0 :(得分:10)
您可以抓取点击的li
的第一个childNode
并附加:{/ p>
$("#activity").append(this.childNodes[0].nodeValue);
答案 1 :(得分:2)
这是使用jquery方法的替代方法
它的作用是复制被点击的节点,然后删除所有子节点。剩下的就是点击的节点,所以我们只得到它的文本。
$("#event li").on("click", function (event) {
event.stopPropagation();
$("#activity").append($(this).clone().children().remove().end().text());
return false;
});
上
答案 2 :(得分:1)
请看一下 http://jsfiddle.net/Va5E4/12/
<div id="event">
<ul><li>Activities
<ul> <li>Physical1
<ul> <li>Cricket
<ul><li>OneDay </li></ul>
</li> </ul>
</li> </ul>
</li></ul>
</div>
<div id="activity"></div>
$("#event ul li").on("click", function(event){
event.stopPropagation();
var html = $(this).html()
var word = html.substr(0, html.indexOf(" "));
$("#activity").append(word);
return false;
});
注意:如果您将“单个字符串”作为“li”的“值”,则此选项将起作用,否则将无效。