繁体   English   中英

jQuery Onclick功能不适用于div,因为一段时间后特定加载

[英]Jquery Onclick functionality not working for div, as specific loaded after sometime

对于<div class="editdiv">Test</div> jQuery单击功能已添加到document.ready函数中。 但是editdiv在页面中动态加载具有延迟。

因此,当我单击div 函数未调用。 通过使用timeout功能可以正常工作。

我需要一种不同的方法来解决此功能。

很难理解您的问题出了什么问题。 我猜您正在使用Ajax或类似技术加载特定的div,这意味着该div最初不可用。

jQuery的工作方式是,它仅将事件绑定到仅在执行部件时可用的元素。

如果在<div id='myDiv'></div> $('#myDiv').click(function(){})时不存在<div id='myDiv'></div> ,则它将不起作用。

一种解决方法是这样做:

$('body').on('click','#myDiv',function(){});

这将注册单击主体,然后检查被单击元素是否具有ID'myDiv'。 我们可以期望<body></body>始终存在。 因此,我们以前的代码所遇到的问题不会在这里发生。

如果您的.editdiv是在js加载后动态加载的,因此您的click事件无法检测到它并且无法正常工作,则应使用事件委托on()处理新的DOM:

$('body').on('click', '.editdiv', function(){
    //Your click event code
})

如果要避免setTimeout ,则可以将delayqueue回调方法一起使用:

$('div.scroll-area-blue')
    .delay(5000)
    .queue(function() {
        $(this).enscroll({
             showOnHover: false,
             verticalScrolling: true,
             verticalTrackClass: 'vertical-track-blue',
             verticalHandleClass: 'vertical-handle-blue'
        });
    });

如果您将更好地使用setTimeout ,则可以像这样使用它:

setTimeout( enscrollDiv, 5000); 

function enscrollDiv(){
    $('div.scroll-area-blue').enscroll({
         showOnHover: false,
         verticalScrolling: true,
         verticalTrackClass: 'vertical-track-blue',
         verticalHandleClass: 'vertical-handle-blue'
    });
}

希望这可以帮助。

也许您是在加载html元素(标记)之前先加载javascript代码。 当所有html标签都已加载完毕时,请尝试在正文的结束标签之前添加包含“ document.ready()”的脚本。 我在黑暗中击中目标。 希望对你有效。 如果不分析有问题的代码,很难生成任何解决方案……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM