ВОЗМОЖНО ЛИ? - PullRequest
       3

ВОЗМОЖНО ЛИ?

2 голосов
/ 22 декабря 2010
here is my case:

    <html>
    <body>
    <head>
    ...
    <script>
 $(function(){
        $('.do-tip').qtip({
            content: 'This is a tip of active hovered element',
            show: 'mouseover',
            hide: 'mouseout',
  })
 });
    </script>
    </head>
    <body>
    <a href="http://www.google.com" class="do-tip">google</a>

    <input type="button" value="load div by ajax" />
    <div> <!-- this div loaded by ajax -->
    <div>
    <a href="http://www.yahoo.com" class="do-tip">yahoo</a> <!-- HOW TO HERE, run the existing script only for this part, JQUERY UNCLE must have a solution-->
    </body>
    </html>

any ideas?

Ответы [ 3 ]

6 голосов
/ 22 декабря 2010

Хотя не совсем понятно, что вы пытаетесь сделать, я попробую свой инструмент MagicGuess и предложу вам ответ.

Итак, вам нужно

а) выполнить некоторые функциипри загрузке документов;эта функция что-то делает со всеми .do-tip элементами на странице

b) выполняет те же функции после загрузки чего-либо через AJAX, но теперь для этого нужно работать с другим набором элементов.

Это правда?Если это так, я бы сделал следующее:

function doEverythingINeed(selector) {
    $(selector).qtip({
        content: 'This is a tip of active hovered element',
        show: 'mouseover',
        hide: 'mouseout',
    })

}

$(function() {
    doEverythingINeed('.do-tip');
});

и вызову doEverythingINeed с другим селектором после загрузки HTML-кода через AJAX.Если вы используете функцию $.ajax(), то вам нужно просто выполнить

$.ajax({
    //parameters
    success: function() {
        //some other actions if needed
        doEverythingINeed('your selector');
        //more actions if needed
    }
});

Надеюсь, это поможет!

4 голосов
/ 29 января 2011

На всякий случай, если это кому-то поможет, у меня был очень похожий сценарий использования, и я решил его с помощью механизма связывания событий jl. ) .ready () события.

Вариант использования: страница с множеством ссылок (теги HTML). В $ ('document'). Ready () я связал события .click () соответствующих ссылок с функцией, которая вызвала некий .ajax (), который извлекал больше ссылок того же типа и вставлял их HTML в страницу. Проблема была в том, что новые ссылки не были связаны. Нажатие на новые ссылки не вызвало код .ajax (), как должно.

Я потратил целую вечность, пытаясь повторно вызвать событие ready после внедрения HTML, а затем понял, что связывание событий с помощью .live ('click) вместо .click () даст точно такой же результат с нулевым дополнительным кодом.

Кстати, кто-то еще дал очень хорошее решение исходного вопроса в другом месте - см. Вопрос 2238030

0 голосов
/ 03 сентября 2014

Вы можете встроить контроллер выполнения модуля в функцию ready и перезапустить функции после того, как вы внедрили HTML. Примерно так:

https://gist.github.com/miguel-perez/476046a42d229251fec3

...