使用jQuery查找下一个或live元素

时间:2011-12-22 23:21:04

标签: jquery-ui find jquery next

好的,不确定find()是否是正确的方法。我正在使用pretty photo,我正在加载一些内联内容。基本上,当漂亮的照片启动时,它会克隆内联定义的内容并将其显示在灯箱中。

这里的问题是我无法调用$("#myTextField").datepicker();来激活文本框上的jQuery UI Datepicker。原因是它将它应用于我最初写的不可见的,而不是可见的克隆的。我之前使用内联内容中的Submit按钮遇到了此问题,我使用$("#mySubmitButton").live('click',function().....解析了

我尝试了$(this).find("#myTextField").next().datepicker();,但没有骰子。还有其他建议吗?我不知道如何使用live()方法。

4 个答案:

答案 0 :(得分:1)

这是因为datepicker的事件未附加在任何克隆元素上。

您可以使用prettyPhoto方法changepicturecallback来绑定克隆元素上的datepicker。 (基于documentation

$("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启动时,它将绑定该事件。

答案 1 :(得分:1)

好吧我通过:Jquery datepicker does not work inside lightbox

想出来了
$("#shoot_date").live("focus",function()
{
    $(this).attr("id","datepickerNEWID");                 
    $(this).datepicker();
});

答案 2 :(得分:0)

不要使用像“#myTextField”这样的id选择器,而应考虑使用像“.dateField”这样的类选择器。

在同一页面上使用相同ID的多个元素可能是您的麻烦源。

答案 3 :(得分:0)

如果您知道“漂亮照片”的HTML结构(您可以使用FireBug或任何其他开发人员工具找到它),那么您可以创建一个选择器,在“漂亮照片”元素中找到克隆元素:

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

这很可能不是针对您的情况进行优化的,但我所拥有的信息与我所获得的信息一样具体。