jQuery DatePicker не появляется, состояние гонки? - PullRequest
0 голосов
/ 23 декабря 2009

Раньше у меня появлялось средство выбора даты, когда я применял его к статическому элементу, но по некоторым причинам я не могу заставить его работать динамически. При определенных конфигурациях это работает, если я сначала выскакиваю окно с предупреждением. Что не так?

div.load(url, function() {
    div.children().each( function(){this.datepicker({dateFormat:"yy-m-d"}});    
    div.appendTo("div#foos_container");
});

Вот еще немного контекста:

Javascript:

   add_foo = function(url) {
    // Clickable
    var numfoos = $("div#foos_container > div.foo").length + 1;
    var foo_id = numfoos + "-foo";
    var div = $("<div></div>").attr("id",foo_id).addClass("foo");
    div.load(url, function() {
        div.children().each(function(){ 
            // what do expect this to be below? 
            // this will be a child element here, so need
            // to wrap to get a jQuery object
            $(this).datepicker({dateFormat:"yy-m-d"}); 
        });        
    div.appendTo("div#foos_container");
});

HTML:

<a id="add_foo" onclick="add_foo('{% url add-foo %}')" class="ajax_link">Add Foo</a>

   <div id="foos_container">

   </div>

Спасибо!

РЕДАКТИРОВАТЬ: Добавлен контекст. Должен отметить, что HTML - это шаблон django.

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

попробуйте это в вашем $(function(){});:

$('input').filter('.datepicker').datepicker();

Я не думаю, что вам нужен какой-то другой мусор, например each, load и все такое. просто filter в вашей функции doc.ready.

1 голос
/ 23 декабря 2009

1001 * попробовать *

div.load(url, function() {
        div.children().each(function(){ 
            // what do expect this to be below? 
            // this will be a child element here, so need
            // to wrap to get a jQuery object
            $(this).datepicker({dateFormat:"yy-m-d"}); 
        });        
        div.appendTo("#foos_container");
});

В свете ваших правок попробуйте следующее.

add_foo = function(url) {
    // Clickable
    var numfoos = $("#foos_container > div.foo").length + 1;
    var foo_id = numfoos + "-foo";
    var div = $("<div></div>").attr("id",foo_id).addClass("foo");

    div.appendTo("#foos_container").load(url, function() {
        div.children().each(function(){ 
        // what do expect this to be below? 
        // this will be a child element here, so need
        // to wrap to get a jQuery object
        $(this).datepicker({dateFormat:"yy-m-d"}); 
    });        

};

Что вы ожидаете от this в div.children().each( ...)?

EDIT:

Вот Рабочая демонстрация , которая имитирует то, что, по моему мнению, вы пытаетесь достичь Добавьте / edit к URL, чтобы увидеть код и поиграть с ним (пример ниже).

<a id="add">Click me to add a div via AJAX Load</a>
<div id="foos_container"></div>

$(function() {

    $('#add').click(function() {

        var numfoos = $("#foos_container > div.foo").length + 1;
        var foo_id = numfoos + "-foo";
        var div = $("<div></div>").attr("id",foo_id).addClass("foo");

        div.appendTo("#foos_container").load("http://jsbin.com/ejalo", function() {
            div.children().each(function(){ 
                $(this).datepicker({dateFormat:"yy-m-d"}); 
            });                
        });                 
    });

});
...