首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

防止点击事件影响父jquery

点击事件可以影响父元素的宽高,可以通过给子元素添加事件监听器,在点击子元素时修改父元素的宽高来实现。

代码语言:javascript
复制
$(document).ready(function(){
  $(".child").on("click", function(){
    // 获取父元素的宽高
    var parentWidth = $(this).parent().width();
    var parentHeight = $(this).parent().height();

    // 定义变量存储子元素的宽高
    var childWidth = $(this).width();
    var childHeight = $(this).height();

    // 计算点击事件相对于父元素的位置,并设置父元素的宽高
    var positionX = $(this).position().left;
    var positionY = $(this).position().top;
    var parentPos = $(this).parent().position();
    var parentLeft = parentPos.left;
    var parentTop = parentPos.top;

    if (positionX < parentLeft) {
      // 如果点击位置在左侧,则将父元素向左移动,并改变宽度
      $(this).parent().css("left", positionX + "px").css("width", parentWidth - positionX + "px");
    } else {
      // 如果点击位置在右侧,则将父元素向右移动,并改变宽度
      $(this).parent().css("left", parentLeft + "px").css("width", parentWidth + positionX - parentLeft + "px");
    }

    if (positionY < parentTop) {
      // 如果点击位置在顶部,则将父元素向上移动,并改变高度
      $(this).parent().css("top", positionY + "px").css("height", parentHeight - positionY + "px");
    } else {
      // 如果点击位置在底部,则将父元素向下移动,并改变高度
      $(this).parent().css("top", parentTop + "px").css("height", parentHeight + positionY - parentTop + "px");
    }
  });
});

这个代码段通过获取点击事件相对于父元素的位置,并根据位置计算出需要改变父元素的宽高,最后使用CSS的left和width属性来实现。当然,也可以使用jQuery的animate方法来动态修改元素的宽高。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • JQuery——动态添加元素导致点击事件失效

    前言 因为博皮当前版本有人反馈文章中标题导航点击无法生成; jquery-click-invalid: https://codesandbox.io/s/jquery-click-invalid-forked-xpt352...内容 一开始我以为是svg导致的点击事件失效,但是看来下代码结构,发现两者并不关联; 开始觉得问题应该出现在.html()方法上,因为文章这块在博皮上是没做什么调整的,所以直接看博客园的blog-common.min.js...; 通过显示目录导航关键字进行搜索,就发现了关键之处,JQuery动态的添加元素,导致事先绑定的click事件失效了,因为.click只适用于静态元素; ?...既然问题找到了,那修复起来就很快了; 因为我们无法改变blog-commom.min.js,所以通过改变自己博皮代码进行修复; 原来代码 通过.html()进行组合,这样导致button对应的click事件失效

    12810

    jQuery中on()、bind()、live()、delegate()之间的区别

    更好的性能优化,以及防止出现不必要的错误。...事件冒泡 当我们点击一个链接时,其触发了链接元素的单击事件,该事件则引发任何我们已绑定到该元素的单击事件上的函数的执行。...click事件接着会向树的根方向传播,广播到元素,然后接着是每个祖先元素,只要是它的某个后代元素上的单击事件被触发,事件就会传给它。 ? 在操纵DOM的语境中,document是根节点。...如果不人为的设置stopPropagation(Moder Browser), cancelBubble(IE),那么它的所有元素,祖宗元素都会受之影响;如之前举例: $('a').bind(...; }); 当我们在a 上面点击的时候,首先会触发它本身所绑定的click事件,然后会一路往上,触发它的元素,祖先元素上所有绑定的click事件

    1.2K30

    你根本不懂Javascript(EP5 HTML事件捕获与冒泡)

    事件捕捉与冒泡 事件绑定机制 阻止冒泡 参考文献 事件捕捉与冒泡 先捕获的必然是节点, 然后一层层向下捕获, 然后一层层向上冒泡 这里是一个 td 被点击的效果图 图片 通过三个阶段:...捕捉阶段: 从父节点, 逐渐向目标节点冒泡, 即自上向下 接近目标 elem 阶段(这一阶段会同时激活第一阶段和第三阶段的 handler) 冒泡阶段: 从子节点向节点冒泡 事件绑定机制 onXXX...(event) addEventListener(event, handler) jQuery 的elem.on(event, selector, handler) 这里有几点需要注意的: event.target..., 又防止冒泡 阻止冒泡 一般不需要阻止冒泡, 因为阻止冒泡之后,可能影响其他事件捕捉机制 组织冒泡的核心在于这个函数:event.stopPropagation() 阻止冒泡之后, 事件将不会继续传递...-- 错误的例子,这个仅仅阻止了默认事件 --> <!

    38740

    jQuery 事件(三) 事件的绑定和解绑、对象的使用、自定义事件

    jQuery on()方法是官方推荐的绑定事件的一个方法 基本用法:.on( events ,[ selector ] ,[ data ] ) 最常见的给元素绑定一个点击事件,对比一下快捷方式与on...() 事件对象的使用 jQuery事件对象的作用 标准的”click”点击事件 $(elem).on("click",function(event){ event //事件对象 }) 在不同浏览器之间事件对象的获取...因为li都有一个共同的元素,而且所有的事件都是一致的,这里我们可以采用要一个技巧来处理,也是常说的”事件委托” 事件没直接和li元素发生关系,而且绑定元素了。...为防止事件冒泡到DOM树上,也就是不触发的任何前辈元素上的事件处理函数 event.which:获取在鼠标单击时,单击的是鼠标的哪个键 event.which 将 event.keyCode 和 event.charCode...jQuery 对象相匹配的元素,而 .triggerHandler() 仅影响第一个匹配到的元素 使用 .triggerHandler() 触发的事件,并不会在 DOM 树中向上冒泡。

    4.1K30

    如何优化前端页面 如何优化网页

    3.3.5 需要考虑a标签的点击区,通常会对a进行处理:转化为块元素并设置高度,或者浮动设置宽高。...3.3.8 对盒模型设置时,子级的margin(顶部)通常会影响级样式,因此,在父子之间的间距使用级的内边距撑开,兄弟级别标签之间的距离可采用外边距。...4.3.3 原生当中,一个元素一种事件只能绑定一次。 4.3.4 可以通过事件委托,减少页面中类似事件的数量。 4.3.5 在删除dom节点之前,需要先移除掉该节点上的事件。...4.4.5 合理使用计时器,防止setInterval造成的内存泄露。 4.4.6 在设置计时器之后需要考虑计时器的清除,以防止计时器的叠加造成的影响。...4.6 框架 4.6.1 jQuery等插件的合理引用,处理常见的浏览器兼容问题。

    2.5K80

    jQuery笔记(4)

    jQuery事件 目标: 本文由“壹伴编辑器”提供技术支持 单个事件注册: element.事件(function( ){ }) 其他事件基本和原生一致,比如mouseover/mouseout...事件委派的定义就是,把原来加给子元素身上的事件绑定在元素身上,就是把事件委派给元素 就算点击每个li元素也会弹出警示框 on()方法优势3: 动态创建的元素,click()没有办法绑定事件...本文由“壹伴编辑器”提供技术支持 自动触发事件 trigger() 有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致.可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发....深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象.如果里面有不冲突的属性,会合并在一起....jQuery插件 图片懒加载

    42120

    jQuery特效 | 导航底部横线跟随鼠标缓动

    HTML5学堂(码匠):jQuery来实现如下特效 - 在导航底部存在一条横线,跟随着鼠标缓动到相应导航项底部。...样式处理 针对级元素进行相对定位设置,针对子级元素(横线)设置绝对定位,并且设置left和bottom的值 针对每个导航元素进行样式设置,需要注意的是,针对“当前”导航,需要给出不同于其他元素的样式(...hover事件 hover事件jQuery中的事件,不存在于原生JavaScript当中,是mouseover(鼠标移入)与mouseout(鼠标移出)的功能综合体; hover事件的基本语法为:...在用户交互过程中,有可能会出现前一个动画还没有结束,新的动画就开启了,为了防止这个问题,我们通常根据需求在动画类效果的前面添加“stop()”方法,用于清除掉当前动画。...Plus:如果希望对this以及offsetLeft做详细了解,可以在文章底部点击相关链接,查看相应文章。

    8.7K50

    【Java 进阶篇】JQuery 事件绑定:`on` 与 `off` 的奇妙舞曲

    当按钮被点击时,回调函数内的代码就会执行,弹出一个提示框。 多个事件类型 on 方法不仅支持单个事件类型,还可以同时绑定多个事件类型。让我们看一个同时监听鼠标悬停和点击事件的例子。 <!...事件代理通过将事件绑定到元素上,然后利用事件冒泡的原理,在元素上捕获事件并判断具体触发事件的子元素。 <!...这样,只有在特定命名空间下绑定的事件才会被解绑,不影响其他事件事件数据传递 有时候我们需要在触发事件时传递一些额外的数据。on 方法允许我们通过事件对象的 data 属性来实现这一目的。 <!...然后,通过 off 方法解绑了点击事件。这样,鼠标悬停事件仍然会被触发,但点击事件不再响应。 解绑所有事件 如果你想彻底解绑所有类型的事件,可以调用 off 方法时不传递任何参数。 <!...这样,只有在特定命名空间下绑定的事件才会被解绑,不影响其他事件。 小结 通过深入学习 on 和 off 方法,我们已经更好地理解了 JQuery 事件绑定的精髓。

    18430

    事件委托

    事件委托也称事件代理,在jQuery里面就称为事件委派。 事件委托就是把事件监听放在祖先元素(如元素、爷爷元素)上。...由于事件会在冒泡阶段向上传播到节点,因此可以把子节点的监听函数定义在节点上,由节点的监听函数统一处理多个子元素的事件。这种方法叫做事件的代理。...事件委托的原理 不是给每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利事件用冒泡的原理影响设置每个子节点 事件委托作用 绑定事件越多,浏览器内存占用越大,严重影响性能 只操作一次DOM...dianwo100 借助事件代理的方法:不需要再每个li项里面添加点击事件,只需要给容器ul绑定方法即可,不管点击哪个li项,都会根据冒泡传播的传递机制,触发点击事件,执行对应的处理方法...,只是给节点ul绑定事件,但是点击每一个li时,可以变换其样式。

    88220
    领券