Все эти недокументированные
xp_getnetname
xp_fileexist
xp_dirtree
xp_subdirs
sp_who2
xp_getfiledetails
xp_fixeddrives
Sp_tempdbspace
xp_enumdsn
xp_enumerrorlogs
sp_MSforeachtable
sp_MSforeachDB
Видят здесь: Недокументированные хранимые процедуры
И теперь начиная с SQL-сервера 2005 все Динамические Представления управления как sys.dm_db_index_usage_stats
: last-child
- действительно единственный способ сделать это без изменения HTML, но если вы можете это сделать, основной вариант - просто присвоить ему класс = "last-item"
, затем выполните:
li.last-item { /* ... */ }
Очевидно, вы можете автоматизировать это с помощью языка генерации динамических страниц по вашему выбору. Кроме того, в W3C DOM есть свойство JavaScript lastChild
.
Вот пример выполнения того, что вы хотите, в Prototype :
$$("ul").each(function(x) { $(x.lastChild).addClassName("last-item"); });
Или еще проще:
$$("ul li:last-child").each(function(x) { x.addClassName("last-item"); });
В jQuery вы можете написать его еще более компактно:
$("ul li:last-child").addClass("last-item");
Также обратите внимание, что этот должен работать без использования фактического селектора CSS last-child
- скорее, используется его реализация на JavaScript, поэтому она должна быть менее ошибочной и более надежной для разных браузеров.
Вы можете использовать jQuery и сделать это таким же образом
$("li:last-child").addClass("someClass");
Я обычно комбинирую подходы CSS и JavaScript, так что он работает без JavaScript во всех браузерах, кроме IE6 / 7, и в IE6 / 7 с включенным (но не выключенным) JavaScript, поскольку они не работают. поддержка псевдокласса : last-child
.
$("li:last-child").addClass("last-child");
li:last-child,li.last-child{ /* ... */ }
Обычно я делаю это, создавая htc-файл (например, last-child.htc):
<attach event="ondocumentready" handler="initializeBehaviours" />
<script type="text/javascript">
function initializeBehaviours() {
this.lastChild.className += ' last-child';
}
</script>
И вызываю его из моего условного CSS-файла IE с помощью:
ul {поведение: URL ("/ javascripts / htc / last-child.htc"); }
В то время как в моем основном файле css я получил:
ul li:last-child,
ul li.last-child {
/* some code */
}
Другим решением (хотя и более медленным), использующим существующую разметку css без определения какого-либо класса .last-child, будет библиотека Дина Эдвардса ie7.js . .
Например, если вы знаете, что в списке есть три li, вы можете сделать следующее:
li + li + li { /* Selects third to last li */
}
В IE6 вы можете использовать выражения:
li {
color: expression(this.previousSibling ? 'red' : 'green'); /* 'green' if last child */
}
Я бы рекомендовал используя специализированный класс или Javascript (а не выражения IE6), пока селектор : last-child
не получит лучшую поддержку.
Одной из альтернатив для IE7 + и других браузеров может быть использование вместо этого : first-child
и инвертирование стилей.
Например, если вы устанавливаете маржа на каждом li
:
ul li {
margin-bottom: 1em;
}
ul li:last-child {
margin-bottom: 0;
}
Вы можете заменить его следующим образом:
ul li {
margin-top: 1em;
}
ul li:first-child {
margin-top: 0;
}
Это будет хорошо работать для некоторых других случаев, например границ.
Согласно sitepoint , ]: first-child
ошибка, но только в той степени, в которой он выберет некоторые корневые элементы (doctype или html) и не может изменить стили, если вставлены другие элементы.
: last-child - это CSS3 и не имеет поддержки IE, а: first-child - это CSS2, я считаю, что следующий безопасный способ реализовать его с помощью jquery
$('li').last().addClass('someClass');