2013-07-05 60 views
1

我試圖檢測何時某個div元素的高度爲0,以顯示帶有消息的div元素。jquery wrap,追加,前置到父div

function checkads() 
{ 
    if ($('#container').height() == 0) 
    { 
     $('.wp_bannerize').wrap($('<div id="notice">ENABLE ADS</div>')); 
    }; 
} 

$(document).ready(checkads); 

上述工作正常,但是,反正是有使腳本包父的div爲1級或2級的孩子DIV以上,而不必定義父手動「wp_bannerize」

的類名
+3

我不確定你的意思是什麼*「自動檢測.wp-bannerize類名」*。 –

+0

注意,你無緣無故地包裝你的checkads函數,你可以簡單地做'$(document).ready(checkads)' –

+0

確實有點混亂,讓我修改這個問題 –

回答

1

你可以嘗試這樣的事:

function checkads() { 
    var $container = $('#container'); 
    if ($container.height() == 0) { 
     $container.parent().wrap($('<div id="notice">ENABLE ADS</div>')); 
     // OR $container.parent().parent().wrap($('<div id="notice">ENABLE ADS</div>')); 
    } 
} 

或更改checkads()功能:

function checkads($current) { 
    if ($current.height() == 0) { 
     $current.parent().wrap($('<div id="notice">ENABLE ADS</div>')); 
    } 
} 

,並調用它像:

checkads($('#container'); 
checkads($('#container2'); 
//etc... 
+0

我試過父母父母,但沒有工作http:// jsfiddle。 net/HweXn/11/ –

+0

@JoseDavidGarciaLlanos這是因爲你的if從來沒有評估爲真(我得到20作爲高度),請檢查這個稍作修改的例子:http://jsfiddle.net/darkajax/MaNdn/2/ – DarkAjax

+0

你有沒有得到20,我在哪裏可以檢查使用Chrome的JavaScript控制檯 –

1

您可以使用$('#container').parent().parent()尋父的父,例如。您還可以使用$('#container').closest('div')搜索最近的div(或其他)的父級列表。你不需要知道類名(雖然你也可以使用closest!)

+0

我試過父母,但沒有工作http://jsfiddle.net/HweXn/14/ –

+0

嘿人你的答案也很好,我希望我可以打進你們倆 –