嘿大家我只是在这里看一下这个引导Jquery代码,在carasoul.js中,我很难理解defaultprevented和preventDefault如何使用自定义事件.看一下bootstrap代码:
var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', {
relatedTarget: relatedTarget,
direction: direction
})
this.$element.trigger(slideEvent)
if (slideEvent.isDefaultPrevented()) return
Run Code Online (Sandbox Code Playgroud)
看到这里检查 if (slideEvent.isDefaultPrevented()) return基本上我不明白如何isDefaultPrevented())使用自定义事件,我尝试在这里创建一个演示:
var slideEvent = $.Event('slide');
$('a').on('click' , function(e){
e.preventDefault();
$(this).trigger(slideEvent);
})
$('a').on('slide' , function(e){
e.preventDefault();
})
if (slideEvent.isDefaultPrevented()) {
console.log('is default prevented');
}
Run Code Online (Sandbox Code Playgroud)
但不知何故下面的代码块从来没有console.log的:
if (slideEvent.isDefaultPrevented()) {
console.log('is default prevented');
}
Run Code Online (Sandbox Code Playgroud)
也许我这样做是错误的.有人可以解释一下吗?我想要做的就是了解PreventDefault()和DefaultPrevented如何使用自定义事件,我想要一个有效的演示,以便我能更好地理解.
这是我尝试过的一个FIDDLE
嘿家伙我有以下标记::
<div class="heading-container">
<p class="stroke">Who we</p>
<h2 class="section-title extreme-bold">Contact us</h2>
<p class="stroke"></p>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我可以使用以下选择器选择第一个.stroke:
.heading-container .stroke:nth-child(1){
max-width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
但以下不适用于第二个中风课:
.heading-container .stroke:nth-child(2){
max-width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
但以下再次有效:
.heading-container .stroke:nth-child(3){
max-width: 200px;
}
Run Code Online (Sandbox Code Playgroud)
现在为什么价值3适用于第二个第n个孩子的选举?
对于第二个孩子来说,以下是不合适的:
.heading-container .stroke:nth-child(2){
max-width: 200px;
}
Run Code Online (Sandbox Code Playgroud) 我刚刚浏览了jBox.js的代码并遇到了以下几行代码:
jQuery(document).on('keyup.jBox-' + this.id, function(ev) {
(ev.keyCode == 37) && this.showImage('prev');
(ev.keyCode == 39) && this.showImage('next');
}.bind(this));
Run Code Online (Sandbox Code Playgroud)
看看这里的代码,这个家伙似乎强迫性地绑定函数的值this,我对这个模式有几个问题.
这是某种设计模式吗?
作者试图通过绑定大多数方法来实现this什么?
例如,采用上面的代码片段,作者试图通过绑定函数来实现什么this.(我的猜测是绑定功能类似于jQuerys $ .proxy吗?在新函数定义中维护它的值.).
我是Jquery自定义事件的新手,只是阅读文档而我决定制作我自己的自定义事件,如下所示:
HTML:
<a href="http://stackoverflow.com/">Hello</a>
Run Code Online (Sandbox Code Playgroud)
JQuery:
$(function () {
// kabhoom = $.Event('click');
$('a').on( 'kabhoom' , function(e){
console.log(e.target);
return false;
})
$('a').click(function(){
$(this).trigger('kabhoom');
})
});
Run Code Online (Sandbox Code Playgroud)
编辑::总结我在上面的代码中的难度returnfalse不起作用!用户仍然可以导航到其中的链接a.
现在这里的glinch是返回false或者preventDefault在这里工作,为什么?
我尝试了一下,当我将逻辑转移到
$('a').click(function(){
$(this).trigger('kabhoom');
return false;
})
Run Code Online (Sandbox Code Playgroud)
它工作,但在我的自定义事件监听器,我的代码不起作用.谁能告诉我为什么?我对Jquery如何工作更感兴趣,这就是我问这个问题的原因!.