【发布时间】:2018-08-02 11:54:43
【问题描述】:
这个问题已经解决了很多次,但这里找到的解决方案在我的情况下仍然不起作用。
我使用我购买的 jQuery 脚本(Codecanyon Real3d 翻书),它有自己的 js 文件。 该脚本在名为“.flipbook-right-arrow”的跨度上附加了一个类。它上面应用了一个“NextPage()”函数。
我想做的是在我自己的自定义 js 文件中添加我的另一个事件,在另一个事件之上(原始的缩小脚本对我来说太复杂太复杂了)。
所以我从平常开始:
$('.flipbook-right-arrow').click(function(){
alert()
})
它不起作用,看起来很正常,因为已经附加了类。
好的,所以,我到处读到这是正确的做法:
$(document).on('click', '.flipbook-right-arrow', function() {
alert();
});
但还是什么都没有……
我也尝试了这些,但没有成功:
$( ".flipbook-right-arrow" ).live( "click", function() {
alert();
});
$( document ).delegate( ".flipbook-right-arrow", "click", function() {
alert();
});
$('.flipbook-right-arrow').on('click', function(){
alert();
});
以下是按钮在原始脚本中的附加方式:
self.btnNext = jQuery('<div class="flipbook-nav"><div class="flipbook-arrow-wrapper"><span class="flipbook-right-arrow skin-color skin-color-bg"></div></div>')
.appendTo(self.bookLayer)
.bind('tap click', function(e) {
if (self.btnNext.disabled) return;
self.btnNext.disabled = true
setTimeout(function() {
self.btnNext.disabled = false;
}, 300)
e.stopPropagation(); //here was the problem!
e.preventDefault();
self.Book.nextPage();
});
有什么问题? 是事件处理问题还是范围问题? 我只是不知道。而且我还不够精明,无法考虑清楚。
仅供参考:
我也“e.prevenDefault()”-ed 他们,没有成功。
我的自定义 js 文件是在所有其他脚本之后加载的。
谢谢。
【问题讨论】:
-
请显示该类是如何附加的。
-
我用代码编辑了我的初始帖子。请注意,即使我在“self.Book.nextPage();”之后添加警报在原始脚本中,什么都不会发生。感谢您的帮助。
-
尝试关闭你的
<span>(以防万一)? -
好消息(在他们的脚本中,不是我的)。但仍然没有发生任何事情。
-
好吧,
click事件似乎被您正在使用的同一脚本捕获,该脚本使用stopPropagation本身,因此它永远不会上升到document或任何封闭元素。如果您从那里删除stopPropagation,它是否有效(使用您的第二种方法)?