【问题标题】:jquery. livequery() strange behaviorjQuery。 livequery() 奇怪的行为
【发布时间】:2015-09-03 08:39:51
【问题描述】:

尝试运行 jquery 插件“livequery”来突出显示动态生成的搜索结果中的某些单词是行不通的! 但是在执行代码之前添加一个 alert() 函数会使突出显示出现!那么问题是什么?

$(document).ready(function(){     
     $('#searchResults').livequery(function(el){
     // alert('test');
     $( '#searchResults' ).highlight( highlightArray );
 });
});  

【问题讨论】:

    标签: javascript jquery livequery


    【解决方案1】:

    你可以尝试通过setTimeout()添加一些延迟

    $(document).ready(function(){     
         $('#searchResults').livequery(function(el){
             // alert('test');
             setTimeout(function(){
                 $( '#searchResults' ).highlight( highlightArray );
             },400);
         });
    });  
    

    【讨论】:

    • 好主意!但是它有一些缺点,例如如果页面内容花费的时间比指定的时间长,它将无法运行……这确实是个好主意,但我希望我能找到更好的。
    【解决方案2】:

    为什么你仍然使用 livequery?目前没有必要。那是在 jQuery 委托事件之前。有关更多信息,请参阅this SO answer。使用 .on() 而不是 livequery()。

    所以你可以这样做

    $(document).on('change','#searchResults',function(el){
        $('#searchResults').highlight(highlightArray);
    });
    

    【讨论】:

    • 我尝试了类似 $(document).on('change','#searchResults',function(){ alert("test"); });
    • 仍然无法正常工作,没有显示警报,我不知道为什么(我 100% 确定 #searchResults Id 是目标 div)
    • 仔细看看 .on() 的工作原理。您不必寻找目标 div 而是寻找触发事件的元素。事件也可以是任何触发元素。在内部,您将在 Dom 中的任何元素上运行动画
    • 我尝试了“body”而不是“#searchResults”,尽管新数据(搜索结果)总是出现在页面上,但仍然没有提醒
    • 正文不是要引用的元素。如果您想进一步调试,请设置一个小提琴并查看 .on 的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2018-07-11
    • 2014-12-25
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多