jquery中当动态渲染元素的时候,无法触发点击,鼠标移入移出事件

导读:本篇文章讲解 jquery中当动态渲染元素的时候,无法触发点击,鼠标移入移出事件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在使用原生写页面的时候我们会发现啊动态渲染页面元素的时候他的事件会失效,那时因为动态渲染的过生往往在你给元素添加事件绑定的js之后执行。

原本是这样写点击和鼠标事件的

$('.textBox .text').on('mouseover',function(){
    swiper.stopAutoplay();
    let name=$(this).parent().parent().find('.name').text().replace(/\s*/g,"")
    rightData.forEach((item,index)=>{
        if(item.name==name){
            
        }
    })
})
$('.textBox .text').on('mouseout',function(){
    swiper.startAutoplay();
})
//点击
$('.text').click(function(){
    
})

当点击事件失效的时候我们可以使用on去代替

//点击
$('.text').on('click',function(){
    
})

当on还是不行的时候我们可以使用jquery— delegate() 方法去实现

定义和用法

delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

使用 delegate() 方法的事件处理程序适用于当前或未来的元素(比如由脚本创建的新元素)

语法

$(selector).delegate(childSelector,event,data,function)

参数 描述
childSelector 必需。规定要附加事件处理程序的一个或多个子元素。
event

必需。规定附加到元素的一个或多个事件。

由空格分隔多个事件值。必须是有效的事件。

data 可选。规定传递到函数的额外数据。
function 必需。规定当事件发生时运行的函数。

这时候的写法为:

$('body'). delegate('.textBox .text','mouseover',function(){
    swiper.stopAutoplay();
    let name=$(this).parent().parent().find('.name').text().replace(/\s*/g,"")
    rightData.forEach((item,index)=>{
        if(item.name==name){
            
        }
    })
})
$('body'). delegate('.textBox .text','mouseout',function(){
    swiper.startAutoplay();
})
$('.test').delegate('click',functon(){

})

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79797.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!