2013-04-12 122 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); 
    }) 
}; 
相關問題