2
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?
4

3 回答 3

6

虽然尚不清楚您要做什么,但我会尝试我的 MagicGuess 工具并为您提供答案。

所以,你需要

a) 在文件加载时执行一些功能;此功能.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并在通过 AJAX 加载 HTML 后使用另一个选择器调用。如果你使用$.ajax()函数,那么你应该这样做

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

希望有帮助!

于 2010-12-22T09:12:26.963 回答
4

以防万一它对其他人有帮助,我有一个非常相似的用例并使用 jQuery 的 .live() 事件绑定器解决了它 - 比我试图通过重新处理所有 $('document').ready 来设计的解决方案要简单得多() 事件。

用例:一个页面上有很多链接(HTML a 标签)。在 $('document').ready() 上,我将相关链接的 .click() 事件绑定到调用一些 .ajax() 的函数,该函数检索更多相同类型的链接并将其 HTML 注入页面。问题是,新链接没有绑定。单击新链接并没有像应有的那样触发 .ajax() 代码。

在注入 HTML 后,我花了很长时间尝试重新触发 ready 事件,然后意识到用 .live('click) 而不是 .click() 绑定事件会产生完全相同的结果,而额外的代码为零。

顺便说一句,其他人已经对其他地方的原始问题给出了非常好的解决方案 - 见问题2238030

于 2011-01-28T21:26:17.807 回答
0

您可以在 ready 函数中构建模块执行控制器,并在注入 HTML 后重新运行这些函数。像这样的东西:

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

于 2014-09-03T12:57:36.677 回答