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 抛出错误,返回“[used method] is not a function”。

在这种情况下,解决方案是使用.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文档

当元素的值改变时, change事件被发送到元素。此事件仅限于元素、框和元素。用于选择框、复选框和单选按钮。

所以得到文本 .text()

console.log($('#example td.qty').text());
于 2012-08-28T11:13:30.070 回答
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>

正如我们看到的单元格的值消失了(我在尝试使用萤火虫检查元素时得到的这个表格)。当我尝试更改萤火虫input内元素的值时,form根本没有显示任何变化(该值隐藏在某处)。所以当我按下Enter按钮时,我意识到change事件将首先被触发,并且在那一刻<td>元素仍然是空的,这就是为什么当我们尝试打印值时仍然是空的。

因此change,我没有使用事件来获取值,而是在jEditable将值返回到单元格之前使用处理程序(如果我们按下Enter按钮,处理程序将被触发)。

于 2012-08-29T01:50:28.840 回答
0

首先td没有change属性用途click而是

$('#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

嗨朋友,

您可以通过使用类名称(.righteditableqty)选择该列,然后使用 .text() 函数选择文本来简单地从表行的表列中获取值。

或使用该脚本:

$(".righteditableqty").Text()

于 2012-08-28T11:45:35.317 回答