选择div的文本

时间:2013-11-01 16:29:48

标签: jquery

我有这个:

$('DIV').on('click', function(e) {
    $('textarea').val( $(e.target).text() );
});

它运行良好,但事实是当我点击div之外的某个地方时,它会显示页面的html代码。我不希望这样。

试试这里:

http://jsfiddle.net/g3Cwy/

我真的只想要一个最小的div,li,ul或其他什么的文本。如果我不清楚,请告诉我。

编辑:我在div中尝试但仍然相同。

编辑2:

例如,如果我有这个:

<div>
divdivdiv
<div>vidvidvid</div>
<lu>lululu</lu>
</div>

如果我点击divdivdiv,我只想要divdivdiv而不是divdivdivvidvidvidlululu

1 个答案:

答案 0 :(得分:1)

您需要将选择器从document更改为'div'

$('div').on('click', function(e) {
    $('textarea').val($(this).text());
});

您还可以使用this代替e.target来获取点击的元素实例。

Updated fiddle


  

我真的只想要一个最小的div,li,ul或其他什么的文本。如果我不清楚,请告诉我。

在这种情况下,它要复杂得多,因为您需要排除子项然后深入到文本节点。试试这个:

$('div').on('click', function (e) {
    e.stopPropagation();
    var text = $(this).not($(this).children()).contents().map(function() { return $.trim(this.nodeValue); }).get();
    $('textarea').val(text.join(' '));
});

Example fiddle