2

おそらく単純な問題ですが、jQueryが私を台無しにしているように感じます。私のコードは、値を取得したいDOM要素に到達しますが、.val()を追加すると、空の文字列が返されます。

$('tr.invoice td[data-attr=Payed] div.true').closest('tr').find('td[data-attr=Expiration]')
Returns this:
[<td data-attr=​"Expiration">​2012-04-22​&lt;/td>​,<td data-attr=​"Expiration">​2012-05-21​&lt;/td>​,<td data-attr=​"Expiration">​2012-06-18​&lt;/td>​]

ご覧のとおり、DOM要素には値がありますが、JS文字列に.val()を追加すると、空の文字列のみが返されます(未定義ではなく、空)

4

3 に答える 3

12

と要素にはメソッドval()が使用されます。inputselect

html()代わりにまたはtext()メソッドを使用する必要があります。

$('tr.invoice td[data-attr=Payed] div.true')
    .closest('tr')
    .find('td[data-attr=Expiration]')
    .each(function() {
        // getting inner HTML
        var html = $(this).html();
    }
);
于 2012-07-02T19:37:21.190 に答える
4

.val()テキスト値ではなく、フォーム要素用です。代わりに使用してください.text()

フィドル: http: //jsfiddle.net/L8V4A/

編集:悪いリンクについてお詫びします。

于 2012-07-02T19:38:16.263 に答える
3

<td>sには値がないため、何も返されません。およびタグ.val()などのフォーム要素でのみ使用されます。要素の内容を取得するには、またはを代わりに使用します。<inputs><select>.html().text()

.html()との違い.text()は、前者は返される文字列にタグを含めるのに対し、前者はタグ.text()の内容のみを返すことです。この例のHTMLでは:

<div>
    <strong>
        Hello world
        <span>How're you doing?</span>
    </strong>
</div>

$('div').html()この文字列を与えます(わかりやすくするために適切にフォーマットされています):

<strong>
    Hello world
    <span>How're you doing?</span>
</strong>

これ$('div').text()を与えるのに対して:

Hello worldHow're you doing?
于 2012-07-02T19:37:39.367 に答える