Могу ли я снова вызвать функцию Ready () в jQuery - PullRequest
3 голосов
/ 16 июня 2009

У меня есть этот код

   $(".insert").click(function(){
            $(".insert").ajaxStop(function(){
                $(".load").hide();
            });
            $(".insert").ajaxStart(function(){
                $(".load").show();
            });

            $.ajax({
                type: "GET",
                url: "edit.php",
                data: "action=add",
                success: function(msg){

                    $(".control").append(msg);
                }
            });


        });

Как вы можете видеть, этот код добавляет HTML-ответ edit.php к .control

проблема

после добавления html .. все изменения jquery не будут в нем применяться .. потому что $ (document) .ready () уже вызывался до того, как появился этот HTML-код ...

можно ли вызывать $ (document) .ready () каждый раз, когда я делаю какие-либо изменения ????

Ответы [ 7 ]

9 голосов
/ 16 июня 2009

Если бы вы могли уточнить, что вы делаете в своей функции document.ready, я мог бы, возможно, оказать более конкретную помощь. Вы можете найти то, что вам нужно, в функции live(), которая имитирует применение событий к объектам, даже если они были добавлены в DOM после вызова live().

Чтобы ответить на ваш вопрос, да, вы можете вызвать обработчик событий, просто выполнив следующее:

$(document).ready();
6 голосов
/ 16 июня 2009

Взгляните на jQuery live . Он предназначен для автоматического связывания событий для новых элементов. Это работает для щелчка, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, keydown, keypress и keyup.

2 голосов
/ 19 августа 2013

Я решил это требование с выключенным и снова включенным событием например:

        $("div.value").off("click");
        $("img.cancelEdit").off("click");

        $("div.value").on("click", function (e) {
            var $this = $(this);
            $this.hide();
            $this.next().show();
        });

        $("img.cancelEdit").on("click", function (e) {
            var $this = $(this);
            $this.parent().hide();
            $this.parent().prev().show();
        });

и Вы можете использовать Selector.Live ();

1 голос
/ 16 июня 2009

В зависимости от структуры манипуляции DOM, которую вы делаете, вы можете использовать делегирование событий для применения обработчиков событий к вновь созданным элементам DOM.

http://www.danwebb.net/2008/2/8/event-delegation-made-easy-in-jquery

1 голос
/ 16 июня 2009

Да, вызов функции ready с аргументом (будь то ссылка на функцию или анонимная функция) добавит ее в цепочку функций, вызываемых jQuery для события.

0 голосов
/ 14 марта 2015

Используйте on () вместо live (). У live () есть некоторые недостатки, и она устарела.

0 голосов
/ 16 июня 2009

Если вам нужно запустить его, когда документ будет готов, оберните его в $(document).ready(function(){});, и он запустится в соответствующее время.

Вы можете добавить правила к методу .ready () для document в нескольких местах.

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