Может ли кто-нибудь объяснить, почему мои элементы не фильтруются?
это то, что написано в книге, и он печально, что если false элемент будет удален и отобразит элементы с true:
$('li').filter(function() { return this.innerHTML.match(/^\d+$/)})
Мне нужно отфильтровать только li с 14.15 (я хочу получить результат только с 14.15)!
http://jsfiddle.net/crew1251/MYXYX/
<ul id="list">
<li>raz</li>
<li>asdf 14.15</li>
<li>tri</li>
<li>chetire_Tri</li>
<li>pyat</li>
</ul>
$('li').filter(function () {
return this.innerHTML.match(/^\d+$/);
});
Если вы хотите найти li
который содержит цифры, вы должны сделать следующее
var listWithDigits = $('li').filter(function () {
return this.innerHTML.match(/\d+/);
// return this.innerHTML.match(/\d+$/); // returns lis that end with digits
// return this.innerHTML.match(/^\d+/); // returns lis that start with digits
// return this.innerHTML.match(/^\d+$/); // returns lis that contain only digits
});
console.log(listWithDigits.length); // 1
Ваше текущее регулярное выражение терпит неудачу, потому что оно принимает только li
которые содержат только цифры, потому что вы завернули свое регулярное выражение с помощью ^$
console.log
Смотрите jsfiddle.net/MYXYX/2
Вы используете неправильный шаблон, вы должны удалить привязки:
$('li').filter(function () {
return $(this).html().match(/\d/);
});
Обратите внимание, что вам не нужно тестировать более одной цифры, поэтому квантификатор +
бесполезен.
$(this).remove()
? ОП не просил удалить его из DOM