如何在div框中添加点击的li文本?

时间:2013-04-29 12:40:13

标签: javascript jquery

我有以下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;
});

http://jsfiddle.net/Va5E4/7/

现在问题当我点击它时它会附加div中的所有li文本,我只想点击li文本。
当点击li时,文字附加在div标签中,例如: - 点击Cricket,然后在点击一天附加在div上时,cricket附加在div中...

我该怎么做? 感谢。

3 个答案:

答案 0 :(得分:10)

您可以抓取点击的li的第一个childNode并附加:{/ p>

$("#activity").append(this.childNodes[0].nodeValue);

Here's a fiddle

答案 1 :(得分:2)

这是使用jquery方法的替代方法

它的作用是复制被点击的节点,然后删除所有子节点。剩下的就是点击的节点,所以我们只得到它的文本。

$("#event li").on("click", function (event) {
    event.stopPropagation();
    $("#activity").append($(this).clone().children().remove().end().text());
    return false;
});

jsfiddle

答案 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”的“值”,则此选项将起作用,否则将无效。