2012-02-23 79 views
1

我有一个jQuery的问题,我不能让过去: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,链接是链接的集合,(现在)链接返回到一些内容。我正在尝试获取分配给每个链接的点击事件,以便通过该链接进行鼠标悬停,将其源视频广播到iframe中。我想在href中保留原始链接信息,这样如果javascript被禁用,链接会将您带到内容中。

windw.frames声明应该重新载入iframe,但我还没有足够的测试它。

该脚本得到正确的href,它只是没有正确地绑定它。我认为$(this)语句的范围是正确的,我登录到控制台并获取我想要的链接,但出于某种原因事件不能绑定?

这是我以前遇到过的麻烦,特别是在each()循环内混合使用javascript和jquery。我真的会有任何见解。谢谢

+0

我不明白你为什么首先将“链接”定义为一个新的数组,然后将其分配给具有视频类的元素?此外,从版本7.1开始,绑定已被弃用。使用$(this).on('mouseenter',,,或$(this).mouseenter(函数(... – 2012-02-23 01:16:13

回答

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')); 
}); 
+0

)这是特殊的帮助,谢谢。我收集,如果绑定已被弃用,这将解释为什么我'数组声明是一个快速修复,在我明确声明之前,每个都只从第一个链接中分配href(我不明白这一点),感谢帮助,我会给它一枪。 – user173361 2012-02-23 01:26:59