gpt4 book ai didi

javascript - jquery addClass 在 1 次行为不当,在另一种情况下工作

转载 作者:行者123 更新时间:2023-11-28 09:32:04 25 4
gpt4 key购买 nike

可能这个问题可能会因为过于宽泛而被关闭,但我不得不发布,因为一段时间以来它一直困扰着我,但在网上搜索没有成功。

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

在此特定页面中,addClass 将类属性中的当前值替换为 undefined

以下是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="">

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

谁能告诉我我可能遗漏了什么?

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

请帮忙!

提前致谢!

编辑:中断的页面在这里(出于安全原因删除了链接)。最后有一个放大镜,应该显示/隐藏一个不起作用的文本框。这在其他页面中工作正常。

最佳答案

我发现了问题。在 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(但我不知道它是否会破坏某些东西):

$.trim = function( text ) {
return (text || "").replace( "/^(\s|\u00A0)+|(\s|\u00A0)+$/g", "" );
}

您可以尝试在将鼠标悬停在元素之前打开 javascript 控制台,执行该代码,您会看到它有效。

关于javascript - jquery addClass 在 1 次行为不当,在另一种情况下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25664707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com