2016-04-01 52 views
3

我創建了一個容器,它預先計劃在身體身體的容器:如何刪除預置到

// Create container 
var container = "<div class='foo'> ... </div>"; 

// Prepend it to the body 
$("body").prepend(container); 

現在我想幾秒鐘後淡出容器:

setTimeout(function() { 
    container.fadeOut(); 
}, 3000); 

但是,它說undefined不是一個函數。我相當確信$(".foo").fadeOut()將工作,但我有不少這.foo容器,我不想分配一個單獨的ID給他們每個人。

回答

4

讓你container變種指向一個JQ對象,而不是一個字符串:

var container = $('<div class="foo"> ... </div>'); 

// Prepend it to the body 
$("body").prepend(container); 

setTimeout(function() { 
    container.fadeOut(); 
}, 3000); 

現在,container擁有​​方法,而不是一個愚蠢的字符串。

編輯:每個請求,創建部分的香草版本:

var container = document.createElement("div"); 
container.className="foo"; 
container.innerHTML= "<b>Hello world</b>"; 
document.body.insertBefore(container, document.body.firstChild); 

的淡出部分香草:

<style> 
     div.foo{ opacity: 1; transition: 1000ms opacity;} 
     div.foo.fade { opacity: 0; } 
</style> 

    setTimeout(function(){ container.classList.add("fade");}, 3000); 
+0

這一個實際上工作。你能告訴我什麼$('

...
');看起來像純JS(以防萬一)? – sdvnksv

+0

我會期待一個錯誤'container.fadeOut不是一個函數.'想知道爲什麼當'container'是一個'string'時他得到'undefined' – sabithpocker

+0

@sabithpocker:不是壞點,但我認爲錯誤報告是非 - verbatum,它只是沒有工作... – dandavis

-1

container是字符串變種。容器字符串指示的DOM元素可以像$('div.foo')那樣訪問。所以,你的fadeout的通話將改變喜歡 - >

setTimeout(function() { 
    $('div.foo').fadeOut(); 
}, 3000); 
2

應該是這樣的:

var container = $("<div class=`foo`><h1>Hello World</h1></div>") 
$("body").prepend(container); 
setTimeout(function() { 
    container.fadeOut(); 
}, 3000); 

工作代碼here

0

嘗試這樣的:

$(document).ready(function(){ 
    var container = $("<div class='foo'><h1>Something...</h1></div>") 
    $("body").prepend(container); 
    setTimeout(function() { 
    container.fadeOut(); 
    }, 3000); 
}); 
0

你傳入一個字符串到你的'容器'變量。 fadeOut功能僅適用於DOM對象。不是字符串。將字符串轉換爲DOM對象使用:

var container = $('Your Code Here');