Элемент двойного щелчка Javascript - PullRequest
2 голосов
/ 28 июня 2009

Привет, ребята .. Быстрый вопрос:

Я написал простой JS, который открывает lightBox для просмотра изображений при нажатии на ссылку изображения. В основном, используя jQuery (да, я был таким ленивым), я обнаруживаю щелчок тега привязки, использую регулярное выражение, чтобы убедиться, что атрибут HREF относится к файлу изображения, и если это так, он открывает изображение в lightBox. Все работает нормально, за исключением одного: якоря нужно два щелчка, чтобы открыть lightBox. Почему это так?

Вот сценарий, который я написал:

    $(document).ready(function(){
    var href;
    var imageExtensions = /(.)+(.jpg)|(.png)|(.gif)|(.bmp)/;
    //On click of any link
    $("a").live("click",function(event){
        href = $(this).attr("href");
        //If the target URL is an image, use lightbox to open it
            if(imageExtensions.test(href)){
                event.preventDefault();
                $(this).attr("class","lightboxIMG");
                //Prevent the link from opening, and open lightbox
                $(".lightboxIMG").lightBox();
                $(this).attr("class","");
            }
    });
//END   
});

Я не понимаю, что может заставить пользователя дважды щелкнуть, чтобы активировать lightBox. Если вам нужен образец, чтобы увидеть, что я имею в виду, в настоящее время я использую скрипт в бета-версии моего нового веб-сайта: http://ctrlshiftcreate.com/photography.php?photo=6&r_folder=

Нажмите "Показать в полном размере", чтобы увидеть, что я имею в виду. Я был бы очень признателен за любую помощь - большое спасибо!

1 Ответ

4 голосов
/ 28 июня 2009

I думаю, , что происходит, это вызов lightbox(), который только устанавливает якорь в лайтбокс, но фактически не отображает лайтбокс Итак, первый щелчок говорит лайтбоксу «сделать ссылку лайтбоксом», а второй щелчок попадает в лайтбокс и фактически отображает лайтбокс.

edit Важен ли живой аспект этого? Или вы планируете добавить дополнительные ссылки, которые вам нужно будет захватить после загрузки документа? Если лайв не важен, стандартный метод lightBox() должен быть достаточно хорош, чтобы ловить клики. Если это так, я бы подумал о написании метода в стиле hookAnchors(), который можно вызывать после ajaxing, который просто снова вызывает lightBox(). Что-то вроде:

$(document).ready(function() {
    hookAchors();
});

function hookAnchors() {
    var imageExtensions = /(.)+(.jpg)|(.png)|(.gif)|(.bmp)/;
    $('a')
        .filter(function() {
            return imageExtensions.test($(this).attr("href"))
        })
        .lightBox();
}

Таким образом, вы можете вызывать hookAnchors внутри вашего кода изменения DOM (например, в результате $.get).

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