我有一个Jquery问题,我无法通过:
(function ($) {
var links = new Array();
var vidFrame = document.getElementById('videoFrame');
links = $('.video');
$(links).each(function() {
$(this).bind('mouseenter', function() {
$(vidFrame).attr('src',$(this).attr('href'));
window.frames[0].location.reload();
});
});
}(jQuery));
vidFrame是一个iframe,links是一个链接集合(现在)链接回一些内容。我正在尝试将点击事件分配给每个链接,以便将鼠标悬停在该链接上,将其源视频广播到iframe中。我想在原始链接中保留原始链接信息,这样如果禁用了javascript,链接就会转到内容。
windw.frames语句应该重新加载iframe但我还没有足够的时间来测试它。
脚本获取正确的href,它只是没有正确绑定它。我认为$(this)语句是正确的,我登录到控制台并获取我想要的链接,但由于某种原因,事件不绑定?
这是我以前遇到过麻烦的一个领域,特别是在每个()循环中混合使用javascript和jquery。我真的很有见地。感谢
答案 0 :(得分:1)
您的代码中需要指出一些事项。您将links
声明为数组,用一组jQuery对象覆盖它,并在调用each()
循环时将其双重包装在jQuery对象中......没有多大意义。
要调用一个不需要each()
循环的事件,您可以在jQuery集合上调用它。您在循环中使用的两个$(this)
具有误导性,您应该首先将其缓存为var that = $(this)
。此外,不再使用bind()
。您可以使用on()
或click()
快捷方式
传入新src
时,iframe应该刷新。看看Ajax Reload iframe。
var $links = $('.video'),
$frame = $('#videoFrame');
$links.mouseenter(function(){
$frame.attr('src', $(this).attr('href'));
});