Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery addClass有1次行为不端,另一次工作_Javascript_Jquery_Css_Addclass - Fatal编程技术网

Javascript jquery addClass有1次行为不端,另一次工作

Javascript jquery addClass有1次行为不端,另一次工作,javascript,jquery,css,addclass,Javascript,Jquery,Css,Addclass,也许这个问题可能会变得过于宽泛,但我不得不发帖,因为这让我很不安,因为一段时间以来,在网上搜索没有成功 我有一个代码,它使用jquery的addClass方法将一个类添加到某个事件的现有元素中。这是工作良好,是我的网站,除了1我的大部分网页。我无法找到造成问题的原因 在这个特定的页面中,addClass将class属性中的当前值替换为未定义 下面是javascript代码 $(this).find('.searchbox').addClass('wid344'); 下面是我的元素,上面的代码向

也许这个问题可能会变得过于宽泛,但我不得不发帖,因为这让我很不安,因为一段时间以来,在网上搜索没有成功

我有一个代码,它使用jquery的
addClass
方法将一个类添加到某个事件的现有元素中。这是工作良好,是我的网站,除了1我的大部分网页。我无法找到造成问题的原因

在这个特定的页面中,addClass将class属性中的当前值替换为
未定义

下面是javascript代码

$(this).find('.searchbox').addClass('wid344');
下面是我的元素,上面的代码向其中添加了类

<input id="SearchBx" type="text" class="searchbox" name="search_text" value="">

下面是它转换成的内容

<input id="SearchBx" type="text" class="undefined" name="search_text" value="">

在其余页面中,它将被转换为

<input id="SearchBx" type="text" class="searchbox wid344" name="search_text" value="">

我发现的一个区别是,在运行的页面中,jquery版本是1.4.2,而不运行的页面是1.6.4,但我无法在它们之间找到任何与addClass相关的内容

谁能告诉我我会错过什么

如果您需要任何进一步的信息,请告诉我

请帮忙

提前谢谢

编辑: 正在断开的页面位于此处(出于安全原因,链接已删除)。末端有一个放大镜,可以显示/隐藏不工作的文本框。这在其他页面中运行良好

您还可以:

$('#SearchBx').removeClass('wid344').addClass('wid344');

我先删除了它,因为它可能是类已经在其中了。

如果添加类对您不起作用,您可以使用attr()函数按如下操作

例如

$('SearchBx').attr('class',$('SearchBx').attr('class')+'wid344')

不知道未定义的是从哪里来的
希望能对你有所帮助。

我发现了这个问题。在
ic_commons.js
文件中,您正在重写jQuery使用的
String.prototype.trim
函数,它有一个错误

您将其定义为:

String.prototype.trim = function () {
    return
    (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
};
您必须删除打断线:

String.prototype.trim = function () {
    return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
};
它总是一无所获

---之前的回答让我明白了错误所在---

我发现问题出在jQuery的AddClass中使用的
trim
函数中。在1.4.2中,它使用jQuery实现的函数,但在1.6.4中,它尝试使用Javascript
String.prototype.trim
函数,出于某种原因,我不知道它返回的是未定义的

您可以在代码中添加jQuery后添加这个函数,将trim函数更改为1.4.2中使用的函数,而不改变整个jQuery(但我不知道它是否会破坏某些东西):


您可以尝试在悬停元素之前打开javascript控制台,执行该代码,您将看到它的工作原理。

您能在JSFIDLE中用适当的jQuery版本重现它吗?在这种情况下,
$(这个)
是什么?@Joe,@RGraham;已编辑的问题如果以前的类显示结果X,并且当DOM更改时,它应该显示结果Y,则它不会刷新到新状态。错误。。。我真的不明白你的意思there@samar我已经用实际错误更新了我以前的答案。我不会删除上一个(我将把它放在下面),因为它解释了我是如何发现修剪功能上的错误的。这似乎是可行的。我所做的是添加您最新的代码,即
$.trim=…
作为
$(“#searchwrapper”).mouseenter(函数(){
。这也不会破坏其他页面。请让我知道这是否是正确的方法。顺便说一句,我这边的+1。我彻底检查后会将其标记为答案。非常感谢。)@samar检查我编辑的答案,事实上我发现问题出在代码的另一部分。如果您更改了该部分,则不必重写$.trim函数。:)是的,我只添加了编辑部分中给出的代码。只是想确认我是否添加了正确的位置。请参考我以前的评论并让我知道。@samar抱歉对于延迟响应。如果可以,您应该直接在
ic_commons.js
中编辑该代码,不要再添加它,因为该函数的格式不正确。在该文件中编辑它之后,它应该在所有页面中以其应能的方式工作,因为现在它正在用一个工作不正常。我希望我已经正确地解释了。如果你不能编辑该文件,请在添加
ic_commons.js
文件后添加该代码,这样它总是能正常工作。它似乎可以工作,但当鼠标离开时,它就坏了。我想我也必须更改鼠标,以匹配你的代码。我会给它一个提示我会通知你的。
$.trim = function( text ) {
    return (text || "").replace( "/^(\s|\u00A0)+|(\s|\u00A0)+$/g", "" );
}