Мне было интересно, можно ли добавить какой-нибудь N-й ребенок к этому фрагменту кода?
$(function() {
var count = $(".parent a").length;
$(".parent div").width(function(){
return ($(".parent").width()/count)-5;
}).css("margin-right","5px");
});
Я бы хотел, чтобы последний div игнорировал margin-right
Это возможно?
Как правило, вы можете использовать селектора jQuery, такие как :last
:last-child
:last-of-type
, и считая, что вам не нужен элемент :not
.
Однако проблема здесь больше связана с тем, когда и как вы выполняете вычисления ширины и применяете CSS.
Я бы разбил это на несколько шагов, сначала сделайте вычисление ширины:
var count = $(".parent a").length;
$(".parent div").width(function(){
return ($(".parent").width()/count)-5;
});
Затем примените правое поле для всех, кроме последнего div:
$(".parent div:not(:last)").css("margin-right","5px");
Это почти доставляет нас туда, последний бит - просто заполнить оставшийся пробел:
$(".parent div:last").width(function() {
return $(".parent div:last").width() + 5;
});
И это должно делать то, что вы хотите. Здесь вы можете увидеть рабочий пример - http://jsfiddle.net/jUU86/3/. Я бы, вероятно, пошел и заменил размер поля переменной тоже, так что вам не придется заменять несколько мест, если вы его измените.
Вы можете больше узнать о селекторах, используемых здесь:
:last-of-type
кажется тем, что вам нужно. Я предпочитаю это :last
и :last-child
потому что более вероятно, что вы хотите продолжить этот тип (div), а не последний.
$(function () {
var count = $(".parent a").length;
$(".parent div").width(function () {
return ($(".parent").width() / count) - 5;
});
$(".parent div:not(:last-of-type)").css("margin-right", "5px");
});
Вы можете добавить его на нечетные/четные числа: count% 2
stops it from working
, этот слегка измененный пример работает, как я и ожидал, - jsfiddle.net/jUU86 , покажите нам, что ваш HTML может упростить ситуацию.