javascript - 添加 preventDefault() 和 stopPropagation()

标签 javascript jquery

总的来说,我是编码方面的新手,尤其是 javascript。

我做了一个翻转的div效果。但是我注意到当点击一个.button触发翻转效果时,页面中所有其他类似的div也会被触发。所以我试图在翻转 div 时同时添加 .preventDefault().stopPropagation(),到目前为止它是一个很大的FAIL/p>

作为初学者,我想出了这段代码..

$('.insidecontent .button').click(function () {
    $('.insidecontent').addClass('flipped');
    $('.insidecontent').removeClass('unflipped');
});
$('.insidecontent .button-c').click(function () {
    $('.insidecontent').removeClass('flipped');
    $('.insidecontent').addClass('unflipped');
});

此处演示:http://jsfiddle.net/uriri/ke7kqvvk/3/

我的一个 friend 建议我应该在 .click() 函数内的当前目标上使用 .parents()。但是在阅读了 jQuery 文档之后,我完全迷失了!

最佳答案

您不需要停止点击事件或防止默认。你只需要翻转正确的元素。不是你在所有 .insidecontent 中添加/删除类,而你只需要选择被点击按钮的父元素:

$('.insidecontent .button').click(function () {
    $(this).closest('.insidecontent').addClass('flipped').removeClass('unflipped');
});
$('.insidecontent .button-c').click(function () {
    $(this).closest('.insidecontent').removeClass('flipped').addClass('unflipped');
});

演示: http://jsfiddle.net/ke7kqvvk/5/

或者更短的优化版本可以是:

$('.insidecontent').find('.button, .button-c').click(function () {
    $(this).closest('.insidecontent').toggleClass('flipped unflipped');
});

演示: http://jsfiddle.net/ke7kqvvk/6/

关于javascript - 添加 preventDefault() 和 stopPropagation(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29976505/

相关文章:

javascript - 使用独特的选择器关闭所有打开的提示工具

JQuery 后代选择器选择页面上的所有元素?

javascript - 使用 JavaScript RegEx 检索第一段标签内的内容

javascript - 将属性写入 cookie

javascript - HTML 文本字段的行为类似于密码字段

javascript - 如何使用 CSS3/HTML5 或 Javascript 根据 div 位置创建 zoom 'windows' 显示图像的缩放部分?

javascript - 如何使用 jQuery 显示图像的加载栏?

javascript - 如何检查网页中的文本是否有粗体

javascript - 如何修复在使用 Jest 进行测试时未正确检查 ajv 模式

javascript - JS循环仅在匹配到数组中的最后一个元素时有效