jQuery datepicker won't work on a AJAX added html element

前端 未结 6 1390
小鲜肉
小鲜肉 2020-12-05 12:06

I have a jQuery datepicker function bound to the \"birthday\" input html element, written in the page header:



        
6条回答
  •  不知归路
    2020-12-05 12:50

    I'm a bit late to the party, but for thoroughness - and with the .live() function being deprecated from jQuery 1.7 onwards - I thought I'd provide an updated solution based on my experiences, and from all the help I got from other answers on StackOverflow!

    I had a situation where I needed to add the datepicker functionality to input fields that were being added to the DOM through AJAX calls at random, and I couldn't modify the script making the AJAX calls to attach the datepicker functionality, so I opted for the new shiny .on() function with its delegation features:

    // do this once the DOM's available...
    $(function(){
    
        // this line will add an event handler to the selected inputs, both
        // current and future, whenever they are clicked...
        // this is delegation at work, and you can use any containing element
        // you like - I just used the "body" tag for convenience...
        $("body").on("click", ".my_input_element", function(){
    
            // as an added bonus, if you are afraid of attaching the "datepicker"
            // multiple times, you can check for the "hasDatepicker" class...
            if (!$(this).hasClass("hasDatepicker"))
            {
                $(this).datepicker();
                $(this).datepicker("show");
            }
        });
    });
    

    I hope this helps someone, and thanks for all the answers so far that led me to this solution that worked for me! :)

提交回复
热议问题