Append separator line after jQuery UI Autocomplete items except after the last item -
i have jquery ui autocomplete bound input element , custom display of items in autocomplete box. each item has multiple lines , want separate items each other, example using <hr /> element. following works renders <hr /> element after last item:
$(function () { $("#customer").autocomplete({ source: "/somepath/searchcustomers?term=abc", select: function (event, ui) { $("#customerid").val(ui.item.customerid); return false; } }) .data("autocomplete")._renderitem = function (ul, item) { var rendereditem = $("<li></li>") .data("item.autocomplete", item) .append("<a>" + item.customerid + ", " + item.name + "<br />" + item.addressline1 + "<br />" + item.countrycode + ", " + item.city + "</a>"); // if (isnotthelastitem(item)) <-- possible? rendereditem = rendereditem.append("<hr />"); rendereditem = rendereditem.appendto(ul); return rendereditem; }; }); (the code derived example here: http://jqueryui.com/demos/autocomplete/#custom-data (click on "view source").)
is possible determine if item going render last item (as indicated in comment line above)? or there alternative add separator between items, not after last item?
since you're using <hr> element visual purpose, think solve problem css only: instead of generating <hr> element inside every <li> via javascript, assign border-top every <li> except first 1 with
ul li { border-top: 1px #ccc solid; padding: 2em 0; } ul li:first-child { border-top: none; padding-top: 0; } the resulting effect line under each list item except last 1 , avoid inject markup via javascript , - more important - insert unnecessary logic detect last item
Comments
Post a Comment