1

私は<td>このような要素を持っています:

<td class="right editable qty">100</td>

その中の値()を取得したいのですが100、問題が発生しました。

これが私のスクリプトです:

$('#example tbody tr td.qty').change(function () {
    var sQty = $(this);

    console.log(sQty); // print [<td class="right editable qty">100</td>]
    console.log($.text(sQty)); // print nothing
    console.log(sQty.val()); // print nothing
    console.log(sQty.text()); // print nothing
    console.log(sQty.html()); // print <form><input style="width: 100%; height: 100%; " autocomplete="off" name="value"></form>
}); 

スクリプトに何か足りないものはありますか?

私が使用しているのは、DataTablesjeditableです。

4

6 に答える 6

5

あなたはで値を得ることができます$(selector).text();

変化する

console.log($.text(sQty));

console.log(sQty.text());
于 2012-08-28T11:14:20.007 に答える
2

誰かがこの質問を見つけた場合に備えて、私はこれを書きます

次のように、複数のタグ<td>から各値を取得(または設定)するために、さまざまなを選択しようとすると、次のようになります。<td>

<td class='myClass'>1</td>
<td class='myClass'>2</td>
<td class='myClass'>3</td>

.text()次のように、、.val()またはを使用する場合.html()

//Example
var tdContainer;
for (int k = 0; k < $("td.myClass").length; k++){
     var tdContainer = $("td.myClass")[k].text() + ", "; //Throws "Uncaught TypeError"
}

Javascriptはエラーをスローし、「[使用されたメソッド]は関数ではありません」を返します。

この場合、解決策は以下を使用すること.textContentです。

//Example
var tdContainer;
for (int k = 0; k < $("td.myClass").length; k++){
     tdContainer += $("td.myClass")[k].textContext + ", ";
}

これがあなたの何人かを助けることを願っています。

于 2015-10-27T15:08:55.917 に答える
1

ヒント:.changeドキュメントから

値が変更されると、変更イベントが要素に送信されます。このイベントは、要素、ボックス、および要素に限定されています。選択ボックス、チェックボックス、およびラジオボタンの場合。

でテキストを取得します .text()

console.log($('#example td.qty').text());
于 2012-08-28T11:13:30.070 に答える
0

まず第一に、代わりにプロパティの使用tdはありませんchangeclick

$('#example tbody tr td.qty').click(function () {
    var sQty = $(this);

    console.log(sQty.html()); // print [<td class="right editable qty">100</td>]
    console.log(sQty.text()); // print 100
    console.log(sQty.val()); // nothing will print,val() is for input type elements
}); 
于 2012-08-28T11:15:13.740 に答える
0

hiii友達、

クラス名(.righteditableqty)でその列を選択し、次に.text()関数でテキストを選択することにより、テーブル行のテーブル列から値を取得するだけです。

またはそのスクリプトを使用します。

$(".righteditableqty").Text()

于 2012-08-28T11:45:35.317 に答える
0
/* Apply the jEditable handlers to the table */
oTable.$('td.editable').editable(
    function(value, settings) {
        if($(this).hasClass('qty')) // The editable class not only on one column.
            console.log(value);
        return(value);
    },
    {   
        "height": "100%",
        "width": "100%"
    }
);

jEditableハンドラーとchangeイベント(上記の質問)を実行しようとすると、changeイベントが最初にトリガーされ、その後にjEditableハンドラーがトリガーされることがわかりました。ハンドラーが行うことは、編集されたセルにとセットをjEditable返すことです。value

デフォルトの場合、テーブルセルは次のようになります。

<td class="right editable qty">1</td>

セルをクリックすると、次のフォームが生成されます。

<td class="rigth editable qty">
    <form>
        <input style="width: 100%; height: 100%; " autocomplete="off" name="value">
    </form>
</td>

セルの値が消えているのがわかります(このフォームは、firebugで要素を検査しようとしたときに取得しました)。そして、firebuginput内の要素の値を変更しようとしてformも、何も変更されませんでした(値はどこかに隠されています)。したがって、Enterボタンを押すと、changeイベントが最初にトリガーされ、その瞬間は<td>要素がまだ空であることがわかります。そのため、値を印刷しようとすると、値はまだ空です。

changeしたがって、イベントを使用して値を取得する代わりにjEditable、セルに値を返す前にハンドラーを使用しています(Enterボタンを押すとハンドラーがトリガーされます)。

于 2012-08-29T01:50:28.840 に答える