Ray*_*own 10 javascript jquery events this fancybox
我正试图$(this)在Fancybox的onComplete事件中使用jQuery ,但我遇到了麻烦.这是我的javascript代码:
$('a.iframe').fancybox({
centerOnScroll: true,
onComplete: function(){
var self = $(this);
var title = self.title;
alert(title.text());
}
});
Run Code Online (Sandbox Code Playgroud)
我已经简化了上面的代码来解释我的观点,但我真的很乐意使用$(this),原因有几个,我不会在这里讨论.
Fancybox的文档显示了使用this而不是$(this)在其文档中使用的示例,但我没有看到任何在内部onComplete或其他事件中使用的示例.我当然尝试过使用this,但无济于事.
有谁知道我怎么可以参考触发a.iframe使用元素$(this)或其他任何方式中的onComplete事件?
编辑: 我使用Blackcoat的建议让这个工作,这里有最终的语法:
$('a.iframe').fancybox({
centerOnScroll: true,
onComplete: function( links, index ){
var self = $(links[index]);
var title = self.find('.title').text();
alert(title);
}
});
Run Code Online (Sandbox Code Playgroud)
emp*_*ine 24
$(this)指向Fancybox对象,这就是为什么它不指向元素.如果您正在尝试获取目标元素,则可以执行以下操作:
var $self = $(this.element);
Run Code Online (Sandbox Code Playgroud)
Bla*_*oat 15
Bitmanic,
可悲的是,你运气不好this,但你仍然可以参考当前的链接.定义您的回调以接受由jQuery选择的链接数组作为其第一个参数,并将索引作为第二个参数:
$('a.iframe').fancybox({
centerOnScroll: true,
onComplete: function( links, index ){
var self = $(links[index]);
var title = self.title;
alert(title.text());
}
});
Run Code Online (Sandbox Code Playgroud)
以下是Fancybox如何调用onComplete hander:
if ($.isFunction(currentOpts.onComplete)) {
currentOpts.onComplete(currentArray, currentIndex, currentOpts);
}
Run Code Online (Sandbox Code Playgroud)
他们没有使用Javascript call或apply调用此函数作为对象的方法.换句话说,this将引用应用程序的全局范围(即document对象),因此您不能使用它来引用要对其执行的对象(对它们感到羞耻).相反,它们将三个参数传递给回调以指定上下文:( currentArray所选对象)currentIndex,和currentOpts.
这是我的方法 - 也是最好的方法:
$(".trigger").fancybox({
onStart: function(element){
var jquery_element=$(element);
alert(jquery_element.attr('id'))
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在http://www.giverose.com上查看