当我编写这段代码时:
<script type="text/javascript">
function showhide(master, detail) {
var src = $(master).children()[0].src;
if (src.endsWith("plus.png"))
src = src.replace('plus.png', 'minus.png');
else
src = src.replace('minus.png', 'plus.png');
$(master).children()[0].src = src;
$(detail).slideToggle("normal");
}
</script>
并在 ScriptManager 中引用 jQuery 库:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/scripts/jquery-1.4.1.min.js" ScriptMode="Release" />
</Scripts>
</asp:ScriptManager>
一切都很好,但是当我在上面的代码中通讯并在头部引用 jQuery 时:
<script src="scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
调试器提醒我,对于endsWith
:对象不支持此属性或方法
为什么 ASP.NET 有这种行为?
谢谢
最佳答案
在这行代码中:
if (src.endsWith("plus.png"))
您假设字符串对象有一个名为 endsWith()
的方法,但标准 javascript 没有这样的方法。有各种扩展可以将该方法添加到字符串对象(编写起来很简单),但是除非您专门将其添加到 String 对象原型(prototype),否则您不能假设它在那里。
我无法解释为什么它会起作用,除非两种配置之一具有安装此扩展的库。它不是 jQuery 的一部分。
这是一个关于添加endsWith()方法的早期SO问题:endsWith in JavaScript我碰巧喜欢该讨论中的这个特定帖子:endsWith in JavaScript .
关于jQuery 脚本引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7213276/