я не знаю почему, но метод jquery not()
возвращает одинаковое значение для двух разных тестов, которые являются эксклюзивными.
Посмотрите:
<script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script language="javascript">
$(function() {
$(':button, :submit').filter(function() {
$('#result').append('tag = ' + $(this)[0].tagName + "<br />");
$('#result').append('.not(\':submit\').length = ' + $(this).not(':submit').length + "<br />");
$('#result').append('.not(\':button\').length = ' + $(this).not(':button').length + "<br />");
$('#result').append('.is(\':button\') = ' + $(this).is(':button') + "<br /><br />");
});
});
</script>
<button>Btn1</button>
<input type="button" value="Btn2" />
<input type="submit" />
<div id="result">
</div>
Вот результаты:
tag = КНОПКА
.not (': submit'). Length = 0
.not (': button').length = 0
.is (': button') = true
tag = INPUT
.not (': submit'). length = 1
.not (': button'). Length = 0
.is (': button') = true
tag = INPUT
.not (': submit'). length = 0
.not (': button'). length = 1
.is (': button') = false
Нашли ошибку?