[英]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
,则可以将delay
与queue
回调方法一起使用:
$('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.