2013-04-12 58 views
2

我正在使用FitVids来反应视频。我实例化这样的:有没有什么办法可以在元素应用后从元素中移除fitVids()?

$("#thing-with-videos").fitVids(); 

我想fitVids()以低于480像素的屏幕尺寸适用于一个特定的元素,我已经实现这一点。但是为了显示我还需要fitVids()如果用户改变浏览器来检查在一个小宽度的显示应用,和我做了这样的事情

jQuery(window).resize(function(){ 
    $("#other-thing-with-videos.small_width").fitVids();    
}); 

...然而,工作正常,如fitVids()似乎应用于被引用的DOM元素,而不像我第一次想到的引用类,这意味着删除类(对于更大的屏幕尺寸)并不会像我想像的那样去除fitVids()的影响。

那么有没有什么办法可以删除fitVids()我调用的元素?

编辑 - 我想知道unbind方法是否可以用于此?

+0

您可以创建的jsfiddle例子吗? –

+0

@HanletEscaño它非常复杂,使用bootstrap wordpress和flexslider构建......它需要很长的时间才能创建一个简化的测试用例......不过谢谢。 – byronyasgur

+0

@HanletEscaño对不起,我刚才意识到我说的是废话,我不需要从小提琴的所有其他东西。这里是一个http://jsfiddle.net/byronyasgur/m6Jwx/ ...我想要做的就是通过JS从'#容器'中将fitVids()从应用程序中移除( – byronyasgur

回答

2

下面将删除类和任何样式父DIV:

$('#container').fitVids(); 
$("#btn").click(function() 
{ 
    $(".fluid-width-video-wrapper").removeClass("fluid-width-video-wrapper").removeAttr("style"); 
}); 

这几乎消除了FitVid效果。

的jsfiddlehttp://jsfiddle.net/hescano/m6Jwx/1/

编辑:我觉得这个解决方案的工作好一点:

$.fn.unFitVids = function() { 
    var id = $(this).attr("id"); 
    var $children = $("#" + id + " .fluid-width-video-wrapper").children().clone(); 
    $("#" + id + " .fluid-width-video-wrapper").remove(); //removes the element 
    $("#" + id).append($children); //adds it to the parent 
}; 

而你只是把它从你的元素是这样的:

$("#myDiv").unFitVids(); 

jsFiddlehttp://jsfiddle.net/hescano/m6Jwx/2/

我可以看到的唯一缺点是,因为我从DOM中删除元素,将它们克隆并放入div父级,如果视频已经播放,它将停止。

+0

)...很好的想法。 – byronyasgur

+1

感谢那个插件......实际上,我发现(大概是因为我的CSS规则)我也需要删除div元素本身......所以我设法使用'unwrap()'来实现它如果父项是'.fluid-width-video-wrapper',则为iframe。再次感谢我永远不会想到这种看待它的方式。 – byronyasgur

1

Hanlets代码是一个好主意,但它假定您只有1个视频在您的选择器中。

下面的扩展代码遍历所有视频的

$.fn.unFitVids = function() { 
    $.each(this, function(i, el){ 
     var $wrapper = $(".fluid-width-video-wrapper", el), 
      $children = $wrapper.children().clone(); 
     $wrapper.remove(); 
     $(el).append($children); 
    }) 
}; 
相关问题