получить следующий или живой элемент с помощью jQuery find - PullRequest
1 голос
/ 23 декабря 2011

Хорошо, не уверен, что find() будет правильным методом для этого. Я использую красивое фото и загружаю некоторый встроенный контент. В основном, когда запускается красивая фотография, она клонирует то, что определено встроенным, и отображает ее в лайтбоксе.

Проблема в том, что я не могу позвонить $("#myTextField").datepicker();, чтобы активировать JQuery UI Datepicker для текстового поля. Причина в том, что он применяет его к невидимому, который я изначально написал, а не клонированному, который виден. Я столкнулся с этой проблемой ранее с помощью кнопки Submit во встроенном содержимом, которую я решил с помощью $("#mySubmitButton").live('click',function().....

Я пытался $(this).find("#myTextField").next().datepicker();, но без игры в кости. Любые другие предложения? Я не знаю, как еще я мог бы использовать метод live().

Ответы [ 4 ]

1 голос
/ 27 декабря 2011

Хорошо, я понял это с помощью: Jquery datepicker не работает внутри лайтбокса

$("#shoot_date").live("focus",function()
{
    $(this).attr("id","datepickerNEWID");                 
    $(this).datepicker();
});
1 голос
/ 23 декабря 2011

Это потому, что событие для указателя даты не прикреплено ни к какому клонированному элементу.

Вы можете использовать метод prettyPhoto changepicturecallback, чтобы привязать указатель даты к клонированному элементу. (на основе документации )

$("a[rel^='prettyPhoto']").prettyPhoto({
    changepicturecallback: function(){/* Called everytime an item is shown/changed */
        $("#myTextField").unbind("datepicker"); // this will unbind previous binded event
        $("#myTextField").datepicker(); // bind new event
    }
});

Или попробуйте добавить $("#myTextField").datepicker(); внутри встроенного элемента. Конечно же, в теге сценария. При запуске prettyPhoto это событие связывается.

0 голосов
/ 23 декабря 2011

Если вам известна структура HTML «Pretty Photo» (вы можете найти ее с помощью FireBug или любых других инструментов разработчика), вы можете создать селектор, который найдет клонированный элемент в элементе «Pretty Photo»:

$('#pretty-photo-id').find('input[type="text"]').datepicker();

Скорее всего, это не оптимизировано для вашей ситуации, но с имеющейся у меня информацией это как можно более конкретно.

0 голосов
/ 23 декабря 2011

Вместо использования селектора идентификатора, такого как "#myTextField", рассмотрите возможность использования селектора классов, такого как ".dateField".

Вероятность вашей проблемы - наличие нескольких элементов на одной странице с одинаковым идентификатором.

...