jQuery插件函数在Firefox中不起作用...但在IE中有效

时间:2011-04-20 14:55:27

标签: jquery firefox plugins internet-explorer-8

我有一个引用.js文件的html文件。 js文件有一个定义为插件的jQuery函数。 html文件中有一些超链接...当点击时应展开显示详细描述(隐藏在页面上)。现在这种安排在IE8下运行,但在Fire Fox上没有。我最初使用Firefox 3.6.13 ....并将其升级到Firefox 4 ...它不适用于任何一个版本。这是一个虚拟的html文件(为了简单起见)和.js文件内容

HTML:

<html>
<head>
   <style>
    span { background:#def3ca; padding:3px; float:left; }
   </style>
   <script src="http://code.jquery.com/jquery-1.5.js"></script>
   <script src="path/to/jquery/file/jquery.compand.js"></script>
</head>
<body>
<table width="100%" border="0" cellspacing="5" cellpadding="5">
  <tr>
    <td width="13%" valign="top">Job Code&nbsp;</td>
    <td width="87%" valign="top">Job Title&nbsp;</td>
  </tr>
  <tr>
    <td valign="top">2223&nbsp;</td>
    <td valign="top"><a class="click" id="2223" href="#">Systems Analyst &nbsp;</a>
        <div class="text" id="2223text"><span>This text was hidden before.</span></div>
     </td> 
  </tr>
<script>$(".click").compand();</script>
</body>
</html>

这是我的js文件,包含定义compand()函数的jQuery插件。

(function( $ ){
    $.fn.compand = function(){
        return this.click(function() {
            alert('item id: '+this.id);
            $("#"+this.id+"text").toggle("slow");   
        });     
    }; 
})(jQuery);

更令我惊讶的是,如果不是拥有.js文件,我在代码之间的html文件中嵌入了以下代码......它在Firefox和IE8上都很有效。这是脚本:

<script>
$('.click').click(function() {
    // get id of the clicked item
    alert('id clicked: ' + this.id);
    $("#"+this.id+"text").toggle('slow', 
        function() {
            alert('Animation complete.');
        });
});
</script>

我要求将此功能作为jQuery插件,以便我不会在几个html页面上复制上述代码。感谢您的阅读!任何指针都赞赏。

2 个答案:

答案 0 :(得分:0)

(function( $ ){
    $.fn.compand = function(){
        return this.click(function() {
            var openID = jQuery(this).attr("id");
            $("#"+openID+"text").toggle("slow");   
        });     
    }; 
})(jQuery);

这种方法怎么样,你会得到什么错误?

答案 1 :(得分:0)

我找到了这种行为的原因,而且我很尴尬地提到我是如何搞砸的。 Luceos感谢您的投入!他们肯定帮助了我。

又过了一天我的脑袋...我发现路径到jquery插件是Firefox发现难以弄清楚的东西。我在这里解释一下: 我有以下设置。我的桌面上有.html和.js文件,如下所示,我提供了完全限定路径来指向我的jQuery函数。

<script src="C:\\Users\\******\\***\\testjQuery\\jquery.compand.js"></script>(Windows分隔符) 要么 <script src="C:/Users/****/****/testjQuery/jquery.compand.js"></script>(Unix分隔符)

IE8能够同时识别并正确获取.js文件,但FireFox(3.6.13和4.0)没有。

相反,当我提供相对路径时,即在相同的上下文中:

<script src=jquery.compand.js"></script>

(因为我的.html和.js文件完全在同一个文件夹中) 现在这适用于FireFox和IE 8