在下面的代码中,我试图将最后一个if语句从第一个margin-top
div.wigDiv
中减去parent
。一切正常,除了它将负余量应用于所有div.wigDiv
父母。有什么想法吗?
$('.wigCont').each(function() {
//some other code here
if ($('div.wigDiv', this).hasClass('noMargin')) {
if (wigCount == 1) {
var width = $('div.wigDiv', this).width();
$('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});
if ($('div.wigDiv', this).parent().first()) {
$('div.wigDiv', this).parent().css('margin-top','-20px');
}
}
}
}
答案 0 :(得分:2)
试试这段代码:
$('.wigCont').each(function() {
//some other code here
if ($('div.wigDiv', this).hasClass('noMargin')) {
if (wigCount == 1) {
var width = $('div.wigDiv', this).width();
$('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});
if ($('div.wigDiv', this).parent().is(':first-child')) {
$('div.wigDiv', this).parent().css('margin-top','-20px');
}
}
}
}
答案 1 :(得分:1)
您只需要在.first
条件下使用if
即可。此外,如果条件仅在找到匹配元素时才适用,则不需要。
$('div.wigDiv', this).parent().first().css('margin-top','-20px');
完整代码:
$('.wigCont').each(function() {
if ($('div.wigDiv', this).hasClass('noMargin')) {
if (wigCount == 1) {
var width = $('div.wigDiv', this).width();
$('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});
//below is the modified code
$('div.wigDiv', this).parent().first().css('margin-top','-20px');
}
}
}
答案 2 :(得分:0)
你正在做
$('div.wigDiv', this).parent().css('margin-top','-20px');
需要做parent().first().css
:)
答案 3 :(得分:0)
回答前快速说明:你的最后一句if语句将永远为真,因为$('div.wigDiv', this).parent().first()
会返回一个对象。
要仅过滤到第一个选定元素,请使用.first()
$('div.wigDiv', this).parent().first().css('margin-top','-20px');