jQuery奇怪的行为

jQuery奇怪的行为,jquery,ajax,jsf,richfaces,Jquery,Ajax,Jsf,Richfaces,我有一个rich:dataTable,在那里我有一个带有span的rich列。 当页面加载时,这个跨度取一些值,如:真+假或真+真等 根据此值,我使用jQuery隐藏包含此跨度的tr,如下所示: <rich:jQuery query="ready(function() { jQuery('#inbox:_inboxTable_').find('span[title=test]').each(function(i, o){ if (jQuery(this).text() ==

我有一个rich:dataTable,在那里我有一个带有span的rich列。 当页面加载时,这个跨度取一些值,如:真+假或真+真等

根据此值,我使用jQuery隐藏包含此跨度的tr,如下所示:

<rich:jQuery query="ready(function() {
jQuery('#inbox:_inboxTable_').find('span[title=test]').each(function(i, o){
        if (jQuery(this).text() == 'true+false' ){
            jQuery(this).closest('tr').fadeOut();
        }
});
})"/>

在Internet Explorer和Chrome上一切正常,但在Firefox上有些奇怪: -当页面正常加载时,tr是隐藏的,但当我执行ajax请求(更改页码或大小)时,页面中的所有组件都会淡出


你能给我一个线索吗?

听起来好像网页布局是基于表格的,
最近('tr')
以某种方式返回了正文的第一个表格行,其中放置了整个内容

此外,您似乎认为每个ajax请求之后都会执行相同的
rich:jQuery
查询,这让我感到奇怪,因为
ready()
实际上只在页面加载期间执行。您的页面中没有其他jQuery/JS片段吗?或者,您的ajax请求是否不像应该的那样异步

顺便说一下,你提供的信息非常简短。请尝试在代码级别详细说明问题,而不是从更高的级别。不仅要从最终用户的角度告诉他们发生了什么,还要从开发人员的角度告诉他们在代码级别发生了什么。执行哪些行,哪些不执行。这些变量的值是多少。这是开发人员应该知道的事情

如果尚未完成,请安装并使用其强大的Javascript调试器

找到了问题!!! -最近('tr')在Firefox中具有有害的行为。因此,与其使用:

jQuery(this).closest('tr').fadeOut();
解决方案是逐个父级使用父级,直到找到跨度的“tr”:

jQuery(this).parent().parent().parent().fadeOut();

您是对的……在ajax请求之后,最近的('tr')变成了“主表的第一行,这很奇怪……因为跨度在同一个位置。”。。我不明白为什么FF在加载页面时发现它是ok的,在ajax请求后发现它是ok的,但错误地返回了最接近的tr…这正是我建议Firebug的原因。我用Firebug对它进行了调试,令人惊讶的是:在做ajax的事情时,jquery函数没有被触及:-oo(但如果我设置了一个限制,例如检查tr的父id,使其不是主表的id,则该表不再隐藏)…所以在firebug中没有被触动,但事实上它很重要…也许你没有正确使用firebug。从远处很难分辨。必须调用一些Javascript,当然没有魔法。这只是代码。