Функция плагина jQuery не работает в Firefox ..., но работает в IE - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть HTML-файл, который ссылается на файл .js. Файл 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-файл, содержащий плагин jQuery, определяющий функцию compand ().

(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 голосов
/ 27 апреля 2011

Я нашел причину такого поведения, и мне довольно неловко упоминать, как я все испортил.Luceos спасибо за ваш вклад! .. они, безусловно, помогли мне.

После очередного дня, когда я ломал голову над этим ... Я понял, что плагин path-to-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

0 голосов
/ 20 апреля 2011
(function( $ ){
    $.fn.compand = function(){
        return this.click(function() {
            var openID = jQuery(this).attr("id");
            $("#"+openID+"text").toggle("slow");   
        });     
    }; 
})(jQuery);

А как насчет этого подхода и какие ошибки вы получаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...