JSFiddle - React, Tailwind, and code Playground
HTML
<h1>Setup List</h1>
<ul>
<li class="divider">Divider A </li>
<li>Sub Text</li>
<li class="mydivider">Sub Text</li>
<li>Sub Text</li>
<li class="divider">Divider B </li>
<li>Sub Text</li>
<li>Sub Text</li>
<li>Sub Text</li>
<li class="divider">Divider C </li>
<li class="mydivider">Sub Text</li>
<li>Sub Text</li>
<li>Sub Text</li>
</ul>
<h1>Expected Result</h1>
<p>Divider A Divider C </p>
<h1>Actual Results</h1>
<p><strong><code>.prev()</code> Misconception</strong> - <span id="prev-result"></span></p>
<p><strong><code>.prevAll()</code> Workaround</strong> - <span id="prevAll-result"></span></p>
<p><strong><code>.prevFirst()</code> Solution</strong> - <span id="prevFirst-result"></span></p>
JavaScript
(function( $ ) {
$.fn.nextFirst = function( type ) {
return this.map(function() {
return $(this).nextAll( type + ":first" );
});
};
$.fn.prevFirst = function( type ) {
return this.map(function() {
return $(this).prevAll( type + ":first" );
});
}
})(jQuery);
$(function(){
var prevResult = $(".mydivider").prev(".divider"),
prevAllResult = $(".mydivider").prevAll(".divider:first"),
prevFirstResult = $(".mydivider").prevFirst(".divider");
$("#prev-result").html(prevResult.text());
$("#prevAll-result").html(prevAllResult.text());
$("#prevFirst-result").html(prevFirstResult.text());
});