Я пытаюсь начать писать несколько простых плагинов jQuery, и для моей первой попытки, если бы подумал, я бы написал что-то, что ничего не делает, кроме применения классов .first
& .last
к переданным элементам.
так, например, я хочу в конечном итоге быть в состоянии:
$('li').firstnlast();
Так что в этой html-структуре:
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li></li>
</ul>
это создаст следующее:
<ul>
<li class="first"></li>
<li></li>
<li></li>
<li class="last"></li>
</ul>
<ul>
<li class="first"></li>
<li class="last"></li>
</ul>
В моем плагине я написал следующее:
(function($) {
$.fn.extend({
firstnlast: function() {
$(this)
.first()
.addClass('first')
.end()
.last()
.addClass('last');
}
});
})(jQuery);
Однако вышесказанное возвращает только это:
<ul>
<li class="first"></li>
<li></li>
<li></li>
<li></li>
</ul>
<ul>
<li></li>
<li class="last"></li>
</ul>
Кажется, что, передавая в функцию только li
, она будет просматривать все элементы li
на всей странице и затем применять к ней классы.
Что мне нужно выяснить, так это то, как я могу в основном сделать функцию «осведомленной о контексте», чтобы передача вышеупомянутого li
в функцию применила бы классы к этим li
s внутри родительского ul
, не до первого и последнего li
на всей странице.
Любые советы, идеи и помощь будут высоко оценены.