2013-07-05 61 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

嘿人你的答案也很好,我希望我可以打进你们俩 –