#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть выпадающий список, например
<select id="ddlProjects">
<option value="315">resproject</option>
<option value="320" style-"display:inline">newheavn</option>
<option value="395" style="display:inline">cealon sales</option>
<option value="395" style="display:inline">cealon sales</option>
</select>
Теперь я хочу подсчитать все элементы, которые являются «display: inline» при изменении, как я могу это получить.
Комментарии:
1. Примечание: опечатка в строке
style-"display:inline"
2. Может помочь вам jsfiddle.net/9SMZD
Ответ №1:
Используйте селектор атрибутов в jquery, чтобы получить длину параметров в выпадающем списке
$('#ddlProjects').change(function(){
var len = $(this).find('option[style="display:inline"]').length
console.log(len)
});
Ответ №2:
По умолчанию display
для свойства <option>
установлено значение inline
Если вам все еще нужно выполнить фильтрацию в соответствии с этим свойством, используйте это,
$('#ddlProjects').change(function(){
var count = $('option',this).filter(function(){
var css =$(this).attr('style');
return css !=undefined amp;amp; css.indexOf('display:inline')>-1;
}).length;
console.log(count);
});
Ответ №3:
Попробуйте использовать .filter()
в этом контексте,
$('#ddlProjects').change(function(){
var count = $(this).children().filter(function(){
return $(this).css('display') === "inline"
}).length;
console.log(count);
})
Попробуйте использовать attribute contains selector
в этой ситуации, поскольку свойство отображения по умолчанию элемента option является встроенным.
$('#ddlProjects').change(function(){
var count = $('option[style*="display:inline"]',this).length;
console.log(count);
});
ДЕМОНСТРАЦИЯ
Комментарии:
1. Это не будет работать как значение is по умолчанию
display
option
inline
. Он всегда будет возвращать общее количество элементов опции, если только они не скрыты.2. @RoryMcCrossan, вы правы, сталкиваетесь с той же проблемой.
Ответ №4:
$('#ddlProjects option').filter(function() {
return $(this).css('display') === 'inline';
}).length;
Комментарии:
1. Пожалуйста, попробуйте конкретизировать свой ответ немного подробнее. Просто публиковать блок кода без каких-либо объяснений или контекста нехорошо. В его нынешнем состоянии ваш ответ может оказаться бесполезным для людей, ищущих ответ на этот вопрос в будущем.