Как выбрать все входы, кроме определенного идентификатора?
Что я хочу сделать, так это выбрать все кнопки ввода в документе, кроме тех, которые находятся под определенным идентификатором.
Пример:
<body>
<input type="button">
<div id="something">
<input type="button">
</div>
<div id="something2">
<input type="button">
</div>
<input type="button">
<input type="button">
<input type="button">
</body>
Например, я хотел бы выбрать все входы, кроме тех, которые находятся под <div>
, чей id
является "чем-то".
Что я пробовал:
1) $('input[type="button"]:not(:parent(#something))').addCSS();
2) $('input[type="button"] :not(#something input[type="button"])')
И другие подобные подходы
Ответы
Ответ 1
Вы можете сделать это так (относительно эффективно).
$("input[type=button]").filter(function() {
return $(this).closest("#something").length == 0;
});
Сначала вы получаете все элементы input[type=button]
, а затем удаляете те, у которых #something
, как родительский.
Другая возможность такова:
$("input[type=button]").not("#something input[type=button]")
Вам нужно будет проверить оба, чтобы увидеть, какая из них более эффективна, но либо будет работать.
Рабочая демонстрация обоих: http://jsfiddle.net/jfriend00/fjxDb/
Ответ 2
Вы были почти там, все, что вам нужно было сделать, это удалить пространство перед вашим: нет.
$('input[type="button"]:not(#something input[type="button"])')
Я знаю, что это старый вопрос, но он появляется сначала в Google, а использование jquery.not(), как показано в принятом ответе, не всегда является опцией.
Ответ 3
Возможно, это работает: $(":not(#something) input[type=button]")