jQuery appendTo在Firefox上断开链接
jQuery appendTo breaks links on Firefox
我在jQuery中重新创建了材料设计涟漪效应,它在IE11和Chrome 46中工作得很好,但在Firefox 39中,如果我将效果应用于链接,它会阻止重定向。我已经设法发现,破坏我的代码的函数是jQuery.appendTo()
函数。
小提琴:http://codepen.io/grekomp/pen/pjpzKQ
正如你所看到的,当你在Chrome中点击链接时,它可以工作,但Firefox只运行js并忽略链接。
有什么好办法吗?我想使用一些跨浏览器兼容的解决方案
如果您不添加$overlay
div,那么链接将按预期工作,并且您将获得大部分视觉效果。我不知道为什么,但是添加div会破坏链接-并且只在Firefox上。
我建议你为火狐开发者打开一个bug,也许他们能帮你找到更好的解决方法。
编辑:找到解决方案了!
将pointer-events: none;
css添加到.ripple-effect
和.ripple-overlay
div中
问题是因为你使用的是mousedown事件而不是click事件…所以FF不会触发两个事件(不像chrome和IE),只触发鼠标按下事件,所以你的解决方案(在FF v31上测试):
$('.ripple').on('mousedown', rippleEffect );
编辑:因为鼠标下降必须工作,这是FF的一个bug,也许只有点击或鼠标下降必须立即启动。所以它有点不优雅,但是复制了你想要的解决方案。
将此添加到mousedown处理程序的末尾
this.click();
或者更好,从另一个答案中提到的SO (Firefox上的鼠标向下和单击冲突),没有比赛事件会发生:
。涟漪{pointer-events:没有;}
从this
切换到$(this)
,对对象应用JQuery:
$("a").on("mousedown", function() {
var p = $(this);
var div = $('<div/>');
div.text("Hello");
div.appendTo(p);
});
$("a").click(function() {
$(this).css("color", "green");
});
在Windows上的FF 41中测试。http://codepen.io/anon/pen/xwpGNw
在你的新代码中,我发现:$overlay.addClass('ripple-overlay')
.css({
background: $(this).data("ripple-color")
})
.appendTo($(this));;
删除额外的分号不会有太大的不同,但这在JSHint中被击中。我甚至将相同的代码移到jsfiddle中进行测试:http://jsfiddle.net/Twisty/p4fvjvtf/我对您的笔进行了微小的更改,并且仍然可以工作:http://codepen.io/anon/pen/xwpwOE
也许我错过了什么不工作。
编辑
根据这些评论,看起来将pointer-events: none;
添加到创建的DIV
的CSS中解决了这个问题。
- markrwithlabel.js(第三方)原始文件链接断开
- 如何使用Cucumber.js检查断开的链接
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- 更新链接形状时,Safari中的SVG clipPath与USE断开
- AngularJS-谷歌Chrome扩展中的动态链接断开
- WordPress 类别下拉菜单选择链接断开
- jQuery 淡入淡出图像上的悬停动画会断开链接
- 野生动物园浮动左边的问题与断开的链接
- 滚动动画会断开页面上的链接
- Javascript 中的 Hashtag RegExp 会断开与锚点和 HTML 实体的链接
- PHP-JSON :检查断开的链接
- 使用Selenium网络驱动程序在网页上查找断开的链接,避免动态生成链接
- jQuery appendTo在Firefox上断开链接
- Bower - EPERM,断开链接错误
- 将HTML代码与javascript断开链接的正则表达式
- Parse.com文件不更新,导致从数据浏览器断开链接
- Javascript:断开链接检查器-优点和缺点
- 如何使用Casperjs检查网页中的断开链接
- 断开链接的替代链接
- 匿名/私人浏览会断开链接