JQuery Captify конфликт другого кода JQuery - PullRequest
0 голосов
/ 22 июня 2010

Я использую библиотеку jQuery captify, чтобы добавить простую ссылку "Редактировать фотографию профиля", когда пользователь наводит курсор на свою фотографию профиля. Текст, который отображается как подпись, является ссылкой, которую я хочу показать в модальном окне fancybox. По какой-то причине captify препятствует привязке ссылки к fancybox и всегда выполняет событие ссылки по умолчанию при попытке загрузки страницы. Это относится к любой ссылке на странице, которую я протестировал, добавив $ ('a'). Click (function () {return false;}); - поэтому кажется, что captify вызывает проблему, когда вы пытаетесь настроить любые другие обработчики событий после вызова captify. У кого-нибудь есть идеи о том, что может быть причиной этого? Или, если это может быть несовместимость с версией jquery, которую я использую (1.4.1) и captify ...

Это HTML-структура, где div # change_pic становится заголовком, наложенным поверх изображения:

<div id = "avatar"> 
 <img src="http://localhost/media/images/silhouette110x110.gif" alt="profile photo" class="captify" rel="change_pic" />    <div id="change_pic"> 
     <a href="http://localhost/image/manage" class="pic_manager">Change your photo</a>    </div> 
    </div> 

Javascript выглядит так:

 //jquery 1.4.1 already loaded
<script type="text/javascript" src="http://localhost/media/js/fancybox/jquery.fancybox-1.3.1.pack.js"></script> 
<script type="text/javascript" src="http://localhost/media/js/fancybox_init.js"></script> 
<link rel="stylesheet" type="text/css" href="http://localhost/media/css/captify.css" /> 
<script type="text/javascript" src="http://localhost/media/js/captify.tiny.js"></script> 
     <script type = "text/javascript"> 
            $(document).ready(function(){

             $('img.captify').captify({
              // caption span % of the image
              spanWidth: '90%'
             });

             $("a.pic_manager").fancybox();  
            });
        </script> 

1 Ответ

1 голос
/ 31 августа 2011

Проблема, похоже, связана с использованием remove () вместо detach (), удаляющего все события, ранее присоединенные к элементу DOM.

Я изменил эти строки кода в captify.js (v. 1.1.3)

var captionLabelSrc = $('#' + $(this).attr('rel'));
var captionLabelHTML = !captionLabelSrc.length ? $(this).attr('alt') : captionLabelSrc.html();
captionLabelSrc.remove();

с

var captionLabelSrc = $('#' + $(this).attr('rel')).detach();
var captionLabelHTML = !captionLabelSrc.length ? $(this).attr('alt') : captionLabelSrc;
//captionLabelSrc.remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...