Чтобы, по крайней мере, начать «сворачивать голову», вот подход, который можно использовать, предполагая, что вы используете некоторый кодовый «язык» для доступа к базе данных SQL Server. Вот некоторый простой для понимания классический ASP-код для вычисления переменной FractionToUse, который затем можно было бы использовать для умножения в операторе SQL:
FirstDayOfCurMonthDate = DateSerial(Year(Date()), Month(Date()), 1)
CurrentDate = Date()
FinalDayOfCurMonthDate = DateSerial(Year(Date()), Month(Date()) + 1, 1 - 1)
DaysInCurMonthRemaining = DateDiff("D", CurrentDate, FinalDayOfCurMonthDate) + 1
DaysInCurMonthTotal = DateDiff("D", FirstDayOfCurMonthDate, FinalDayOfCurMonthDate) + 1
FractionToUse = DaysInCurMonthRemaining / DaysInCurMonthTotal
Два метода в особенности были бы очень полезным решением этой проблемы: .nextUntil
, и .andSelf
. Первое захватит все одноуровневые элементы после Вашего селектора, и последний смешает в том, что подобрано Вашим селектором также, дав Вам один объект jQuery, который включает их всех:
$("#heading2")
.nextUntil("#heading3").andSelf()
.css("background", "red");
Это приводит к следующему:
Да, Вы правы. Это только избежит желаемого селектора. Возможно, это должно быть более подробно:
$(firstSelector).nextAll().not(secondSelector).not($(secondSelector).nextAll()).text()
Возможно, с
$(selectorForFirstHeading).nextAll().not(selectorForLastHeading).text()
, Почему я использую text()
? Поскольку html()
только возвратит внутреннее HTML первого элемента результата.
Если Ваши элементы на том же уровне, чем-то вроде этого:
<h1 id="heading1">...</h1>
<ul>...</ul>
<p>...</p>
<ul>...</ul>
<p>...</p>
<h1 id="heading2" >...</h1>
таким образом, Ваш следующий элемент заголовка не является ребенком элемента на том же уровне как первый элемент заголовка. Можно попробовать этот код:
// This will get all the following siblings of <h1 id="heading1"> except those that are headings themselves
var elements = $('#heading1').nextAll().not("h1");