Swift 3
extension String {
public func charAt(_ i: Int) -> Character {
return self[self.characters.index(self.startIndex, offsetBy: i)]
}
public subscript (i: Int) -> String {
return String(self.charAt(i) as Character)
}
public subscript (r: Range) -> String {
return substring(with: self.characters.index(self.startIndex, offsetBy: r.lowerBound)..) -> String {
return substring(with: self.characters.index(self.startIndex, offsetBy: r.lowerBound)..
Использование
let str = "Hello World"
let sub = str[0...4]
Что ж, к счастью для нас, программистов, которые пишут код для еды и славы, не все мыслимые функциональные возможности были написаны в виде плагинов :)
Но это довольно просто:
var from = 0, step = 5;
function showNext(list) {
list
.find('li').hide().end()
.find('li:lt(' + (from + step) + '):not(li:lt(' + from + '))')
.show();
from += step;
}
function showPrevious(list) {
from -= step;
list
.find('li').hide().end()
.find('li:lt(' + from + '):not(li:lt(' + (from - step) + '))')
.show();
}
// show initial set
showNext($('ul'));
// clicking on the 'more' link:
$('#more').click(function(e) {
e.preventDefault();
showNext($('ul'));
});
Конечно, это лучше извлекать в функцию, подобную плагину, но я оставлю это в качестве упражнения для читателя;)
<html>
<head><title>Test</title></head>
<body>
<ul class="more">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
<li>six</li>
<li>seven</li>
<li>eight</li>
<li>nine</li>
<li>ten</li>
</ul>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript">
$(function() {
$("ul.more").each(function() {
$("li:gt(4)", this).hide(); /* :gt() is zero-indexed */
$("li:nth-child(5)", this).after("<li class='more'><a href='#'>More...</a></li>"); /* :nth-child() is one-indexed */
});
$("li.more a").live("click", function() {
var li = $(this).parents("li:first");
li.parent().children().show();
li.remove();
return false;
});
});
</script>
</script
</body>
</html>
В основном, что это делает:
Изменить: Исправлено несколько мелких ошибок. Теперь это полностью рабочий пример (просто убедитесь, что ссылка jquery верна).
Вы хотите начать со скрытого каждого элемента в списке (CSS: display: none). Затем разместите дополнительную ссылку под элементом списка.
$(document).ready(function()
{
$("a#myMoreLink").click(function()
{
var items = $("ul#myList > li:hidden");
if(items.length > 0)
items.slice(0, 5).show();
else
$(this).html("No more");
return false;
});
$("a#myMoreLink").click();
});
С HTML:
<ul id="myList">
<li style="display: none"></li>
<li style="display: none"></li>
</ul>
<a href="http://" id="myMoreLink">More</a>
Что-то вроде этого. $ ("a # myMoreLink"). click (); вызывается для отображения начальных 5 элементов при загрузке страницы.
Это работает, но, конечно, вам придется немного его настроить :)
html:
<div style="width:200px;border:3px groove blue;">
<ul id="list">
<li>Thai</li>
<li>Turkish</li>
<li>Portuguese</li>
<li>American English</li>
<li>Arabic</li>
<li>Canadian French</li>
<li>Chinese Simplified</li>
<li>Chinese Traditional</li>
<li>Czech</li>
<li>Danish</li>
<li>Dutch</li>
<li>English</li>
<li>Finnish</li>
<li>French</li>
<li>German</li>
<li>Greek</li>
<li>Hebrew</li>
<li>Hungarian</li>
<li>Italian</li>
<li>Japanese</li>
<li>Norweigan</li>
<li>Polish</li>
<li>Russian</li>
<li>Spanish</li>
</ul>
<a href="#" id="lnkMore">More</a>
</div>
javascript:
<script type="text/javascript">
var len = 0;
var curStart = 0;
var count = 5;
var items=new Array();
function BackupList() {
var lst = $("ul#list");
len= $("ul#list li").length;
if (len <= count)
return;
$("ul#list li").each(function() {
items.push($(this));
$(this).remove();
});
var html="";
for (curStart; curStart < count && curStart < len; curStart++) {
html += "<li>" + $(items[curStart]).html() + "</li>";
}
$(html).appendTo($(lst));
}
function ShowMore() {
if (curStart >= len) {
curStart = 0;
}
$("ul#list li").each(function() {
$(this).remove();
});
var l = curStart;
var html = "";
for (curStart; curStart < (l + count) && curStart < len; curStart++) {
html += "<li>" + items[curStart].html() + "</li>";
}
$(html).appendTo($("ul#list"));
}
</script>
Подключить jquery для события:
<script type="text/javascript">
$(document).ready(function() {
BackupList();
$("a#lnkMore").click(function() { ShowMore(); });
});
</script>