我有一个像这样的<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>
});
我的剧本是否缺少某些内容?
我正在使用:DataTables和jeditable
答案 0 :(得分:5)
您可以使用$(selector).text();
更改
console.log($.text(sQty));
到
console.log(sQty.text());
答案 1 :(得分:1)
提示:来自.change文档
更改事件在其值更改时发送给元素。这个 事件仅限于元素,盒子和 元素。对于选择框,复选框和单选按钮。
所以请使用.text()
console.log($('#example td.qty').text());
答案 2 :(得分:1)
我写这个以防有人发现这个问题
尝试选择各种<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抛出错误,返回&#34; [used method]不是函数&#34;。
在这种情况下,解决方案将使用.textContent
:
//Example
var tdContainer;
for (int k = 0; k < $("td.myClass").length; k++){
tdContainer += $("td.myClass")[k].textContext + ", ";
}
希望这有助于你们中的一些人。
答案 3 :(得分: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
});
答案 4 :(得分:0)
hiii朋友,
您只需通过选择具有类名(.righteditableqty)的列,然后使用.text()函数选择文本,即可从表行的表列中获取值。
或使用该脚本:
的 $(".righteditableqty").Text()
强> 的
答案 5 :(得分: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
事件1}}处理程序。 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
正如我们所看到的那样,单元格的值消失了(这是我在尝试使用firebug检查元素时得到的形式)。当我尝试更改form
内的Enter
元素的值时,firebug根本没有显示任何变化(值隐藏在某处)。因此,当我按下change
按钮时,我意识到<td>
事件将首先触发,此时change
元素仍为空,这就是为什么当我们尝试打印该值时还是空的。
因此,我没有使用jEditable
事件来获取值,而是在将值返回到单元格之前使用Enter
处理程序(如果我们按下{{,则会触发处理程序1}}按钮)。