Javascript 如何使用jQuery检查另一个元素/标记中是否没有元素/标记
我已经搜索了整个堆栈溢出站点,但我可以找到答案 当Javascript 如何使用jQuery检查另一个元素/标记中是否没有元素/标记,javascript,jquery,html-table,Javascript,Jquery,Html Table,我已经搜索了整个堆栈溢出站点,但我可以找到答案 当中不再有时,下面的代码不会显示任何警报,这是为什么 我相信下面的方法应该有效,但什么也没有发生: <script> $('td > a').click(function(e){ var this_elem = $(this); if( this_elem.hasClass("remove") ){ this_elem.parent().parent().remove(); } return fal
中不再有
时,下面的代码不会显示任何警报,这是为什么
我相信下面的方法应该有效,但什么也没有发生:
<script>
$('td > a').click(function(e){
var this_elem = $(this);
if( this_elem.hasClass("remove") ){
this_elem.parent().parent().remove();
}
return false;
});
if( $("tbody > tr").length === 0 ){
alert("No more rows of products...");
}
</script>
$('td>a')。单击(函数(e){
变量this_elem=$(this);
如果(本要素已分类(“删除”)){
此元素为parent().parent().remove();
}
返回false;
});
如果($((“tbody>tr”)。长度===0){
警报(“不再有产品行…”);
}
HTML:
三星LE40C580J1 LCD HD 1080p数字电视,40英寸内置Freeview HD,三星LE40C580J1 LCD HD 1080p数字电视,40英寸内置Freeview HD
产品代码:1254782
库存
因为您没有计算下一行,所以您正在计算页面中所有表中正文中的所有行
鉴于问题中添加的其他细节,我向您提供以下信息:
$('a.remove').click(
function() {
$(this).closest('tr').remove(); // a slightly more concise form of your own code
return false;
});
$('table tbody').bind('DOMNodeRemoved', function() {
var c = $('table tbody tr').length;
if (c === 1) { // testing against '1' because the count is performed before
// the row is actually removed from the DOM.
alert("The final row is about to go.");
}
});
.因为您没有计算下一行,所以您正在计算页面中所有表的正文中的所有行
鉴于问题中添加的其他细节,我向您提供以下信息:
$('a.remove').click(
function() {
$(this).closest('tr').remove(); // a slightly more concise form of your own code
return false;
});
$('table tbody').bind('DOMNodeRemoved', function() {
var c = $('table tbody tr').length;
if (c === 1) { // testing against '1' because the count is performed before
// the row is actually removed from the DOM.
alert("The final row is about to go.");
}
});
.页面中只有一个表吗?否则,您将计算页面中所有表中的所有行
要以这种方式计算行数,您可以在此处查看我的测试:
编辑:
当您发布代码时,我看到您仅在页面加载时检查行数。每次删除一行时都应检查该行:
$('td > a').click(function(e){
var this_elem = $(this);
if( this_elem.hasClass("remove") ){
this_elem.parent().parent().remove();
if( $("tbody > tr").length === 0 ){
alert("No more rows of products...");
}
}
return false;
});
页面中只有一个表吗?否则,您将计算页面中所有表中的所有行
要以这种方式计算行数,您可以在此处查看我的测试:
编辑:
当您发布代码时,我看到您仅在页面加载时检查行数。每次删除一行时都应检查该行:
$('td > a').click(function(e){
var this_elem = $(this);
if( this_elem.hasClass("remove") ){
this_elem.parent().parent().remove();
if( $("tbody > tr").length === 0 ){
alert("No more rows of products...");
}
}
return false;
});
您没有为我们提供太多信息,但我的第一个猜测是,您的JQuery选择器在页面上的任何表中查找行。如果页面中有任何其他表,这些行也可能被计数。您需要做的是使JQuery选择器更加具体。例如:
if( $(" #myTableName > tbody > tr").length === 0 ){
alert("No more rows of products...");
}
请注意,我已经向选择器添加了一个ID。这告诉JQuery只在ID为“myTableName
”的表中查找行您没有为我们提供太多信息,但我的第一个猜测是,JQuery选择器在页面上的任何表中查找行。如果页面中有任何其他表,这些行也可能被计数。您需要做的是使JQuery选择器更加具体。例如:
if( $(" #myTableName > tbody > tr").length === 0 ){
alert("No more rows of products...");
}
请注意,我已经向选择器添加了一个ID。这告诉JQuery只查找ID为“myTableName
”的表中的行。也许您应该考虑使用nextAll
也许你应该研究下一步的使用
是的,页面上只有一个表。@Shaoz:问题不是代码不起作用,问题是您只运行了一次。您应该在删除行后进行检查。请参阅上面我的编辑。是的,页面上只有一个表。@Shaoz:问题不是代码不起作用,问题是您只运行了一次。您应该在删除行后进行检查。请看我上面的编辑。@David Thomas:页面上只有一个表格。但我只想在tbody为空时提醒用户…@Shaoz,您是删除tr
s还是出于某种原因只是对它们进行迭代?如果您编辑您的问题以添加相关详细信息,那么我想我们可以提供帮助。=)@大卫·托马斯:我正在用一个“删除”链接/按钮删除每个tr
。然后,当不再有tr
时,会出现一个警报框,通知不再有tr
。注意:我刚刚用更多信息更新了这个问题。@shaoz,请检查编辑,我认为它应该是你想要的,尽管它只在Ubuntu10.10上的Chrome8.x上测试过。@David Thomas:是的,它可以工作。非常感谢你,大卫。。。问题是我在错误的时间进行检查。。。有趣的。。。但是非常感谢。@David Thomas:页面上只有一张桌子。但我只想在tbody为空时提醒用户…@Shaoz,您是删除tr
s还是出于某种原因只是对它们进行迭代?如果您编辑您的问题以添加相关详细信息,那么我想我们可以提供帮助。=)@大卫·托马斯:我正在用一个“删除”链接/按钮删除每个tr
。然后,当不再有tr
时,会出现一个警报框,通知不再有tr
。注意:我刚刚用更多信息更新了这个问题。@shaoz,请检查编辑,我认为它应该是你想要的,尽管它只在Ubuntu10.10上的Chrome8.x上测试过。@David Thomas:是的,它可以工作。非常感谢你,大卫。。。问题是我在错误的时间进行检查。。。有趣的。。。但是非常感谢。忘了提到页面上只有一张桌子,所以我没有在上面写“id”。所以它应该仍然有效…忘了提到页面上只有一张表,所以我没有在上面写上“id”。所以它应该仍然有效…我想我们需要更多的信息。这个代码从哪里调用?@Karl Nicoll:它在
的内部调用。我也更新了问题。我想我们需要更多的信息。这个代码从哪里调用?@Karl Nicoll:它在
的内部调用。我也更新了问题。