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"> submit を押すと、 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

あなたは近くにいます。1 つには、フィドルに jQuery ライブラリが含まれていません。

textare コンテンツを jQuery オブジェクトにロードするだけで、解析されます。次に、必要.filter('u')なコンテンツを取得するために使用できます。

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

デモ: http://jsfiddle.net/QhsDY/

1 つの「落とし穴」は、.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 に答える