2011-08-27 33 views
1

当我写这篇文章的代码:jQuery脚本引用

<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> 

和参考jQuery库中的ScriptManager:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Scripts> 
     <asp:ScriptReference Path="~/scripts/jquery-1.4.1.min.js" ScriptMode="Release" /> 
    </Scripts> 
</asp:ScriptManager> 

当我上面的CommNet代码和参考的jQuery在头部的每一件事情是ok.but :

<script src="scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 

调试提醒我,对endsWithObject doesn't support this property or method

为什么asp.net有这种行为?

谢谢

回答

2

在这一行代码的:

if (src.endsWith("plus.png")) 

我们假定你是该字符串对象有一个名为endsWith()方法,但是标准JavaScript没有这样的方法。有各种扩展将该方法添加到字符串对象中(这是一个简单的写法),但是除非特意将其添加到String对象原型,否则不能假定它存在。

我无法解释为什么它可以正常工作,除非两个配置中的一个具有安装此扩展的库。它不是jQuery的一部分。

下面是关于添加endsWith()方法的一个较早的SO问题:endsWith in JavaScript我碰巧喜欢这个讨论中的特定帖子:endsWith in JavaScript

+0

我添加了对jQuery的引用,所以endWith必须识别 – Arian

+1

@Nima - Huh? jQuery没有'endsWith()'方法。你的代码的问题是'endsWith()'没有被定义。这正是错误信息告诉你的。 – jfriend00

1

检查jQuery的路径是否正确。 ScriptReference路径是“〜/ scripts/jquery”(相对于应用程序根目录),但是你的直接引用是“scripts/jquery”(相对于页面),并且这些路径可能根据页面的位置而不同。

+0

不,它是正确的。我将我的脚本拖放到头部和上方引用动态创建 – Arian

+0

使用拖放操作并不能保证引用在运行时是正确的。 – AUSteve