1

我想制作一个脚本来提取我定义的元素中的所有内容。在这个例子中,它是<u>元素。

HTML

<textarea cols="75" rows="25" id="textShit"><u>sd</u></textarea><br>
    <input type="submit" name="submit" id="submit"/>
    <div id="res"></div>

JS

$(function(){
    $('#submit').on('click',function(){
        $('textarea:contains("u")').each(function() {
            //$('#res').html($(this).val()+'<br>');
            alert($(this).val());
        })
    });
});

我想当我点击提交时,<div class="res"> 它会返回 every 里面的内容<u>

如何做到这一点?

http://jsfiddle.net/warface/Ewve8/

4

2 回答 2

2
$(function () {
    $('#submit').on('click', function () {
        var val = $.trim( $('textarea').val() );
        var text = $('<div/>').html(val).find('u').text();
        // console.log(text);
    })
});

http://jsfiddle.net/Ewve8/1/

更新:您可以使用map方法并加入返回数组的元素:

$('#submit').on('click', function () {
    var val = $.trim( $('textarea').val() ),
        text = $('<div/>').html(val).find('u').map(function(){
            return $(this).text();
        }).get();

    $('.res').html( text.join('<br>') ); 
})
于 2013-04-05T01:28:09.480 回答
0

你很亲密。一方面,您没有在小提琴中包含 jQuery 库。

只需将您的 textare 内容加载到 jQuery 对象中,它就会被解析。然后你可以使用.filter('u')来获取你想要的内容:

var html = $($(this).val());
$('#res').html(html.filter('u').html());

演示:http: //jsfiddle.net/QhsDY/

一个“陷阱”是它.filter()只会返回顶级元素,所以如果<u>嵌套它就行不通。解决方法是使用.find(),但诀窍是.find()不会查看顶级元素。因此,将内容包装在 a 中div,然后使用.find()

var html = $('<div/>').html($(this).val());
$('#res').html(html.find('u').html());

演示:http: //jsfiddle.net/QhsDY/1/

至于多个<u>元素,请使用.each()

var html = $('<div/>').html($(this).val());

html.find('u').each(function() {
    $('#res').append($(this).html()+'<br>');
});

演示:http: //jsfiddle.net/QhsDY/2/

于 2013-04-05T01:26:35.377 回答