Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2009, 18:49
Новичок на форуме
Отправить личное сообщение для xpg934 Посмотреть профиль Найти все сообщения от xpg934
 
Регистрация: 06.04.2009
Сообщений: 1

подскажите с :has, :first-child и :not(:disabled)
Что-то не пойму, в чем проблема.
Есть табличка. Задача: выделить те строки, у которых в _первой_ ячейке есть checked чекбокс, и при этом он не должен быть disabled.

Код тут:

<html>
<body>
    <script type="text/javascript" src="jquery-1.3.2.js"></script>
    
    <script type="text/javascript">
        $(document).ready(function () {
            $("table tr:has(td:first-child > :checkbox:checked:not(:disabled))")
                .css("background-color", "red");
        });
    </script>

    <table>
        <tr><td><input type="checkbox" value="true" /></td><td>Item 1</td><td>Item 2</td></tr>
        <tr><td><input type="checkbox" value="true" checked="true"/></td><td>Item 1</td><td>Item 2</td></tr>
        <tr><td><input type="checkbox" value="true" /></td><td>Item 1</td><td><input type="checkbox" value="true" checked="true"/></td></tr>
        <tr><td><input type="checkbox" value="true" checked="true" disabled="true"/></td><td>Item 1</td><td>Item 2</td></tr>
        <tr><td><input type="checkbox" value="true" /></td><td>Item 1</td><td>Item 2</td></tr>
        <tr><td><input type="checkbox" value="true" checked="true"/></td><td>Item 1</td><td>Item 2</td></tr>
    </table>
</body>

</html>


В результате ничего вообще не выделяется. Решить проблему можно например убрав first-child:
$("table tr:has(td > :checkbox:checked:not(:disabled))")

но тогда в выбор попадает строка, в которой чекбокс не в первой колонке

Второе решение, убрать проверку на disabled:
$("table tr:has(td:first-child > :checkbox:checked)")

тогда всё правильно, но не проверяется на disabled

Третий вариант, работающий:
$("table tr:has(td:first-child > :checkbox:checked)").not(":has(td:first-child > :checkbox:disabled)")

так всё работает, как задано задачей... но, ПОЧЕМУ не работает первый вариант?
Ответить с цитированием
  #2 (permalink)  
Старый 23.04.2009, 16:09
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

1. При использовании jquery версии 1.2.6 Ваш первоначальный пример работает.
2. А вот почему не работает в 1.3.2... Что-то изменили в механизме выбора, почитайте, что изменилось в версии 1.3.
Можно написать одним селекторм в Вашем случае:
$("table tr:has(td:first-child > :checkbox:checked[disabled!='true'])").css("background-color", "red");
Ответить с цитированием
  #3 (permalink)  
Старый 23.04.2009, 16:17
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Хе-хе... все проще:
$("table tr:has(td:first-child > :checkbox:checked:enabled)")
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите с параметрами функций hadji29 Общие вопросы Javascript 2 15.02.2009 20:39
Выпадающее меню ! Подскажите пожалуйста 123 Общие вопросы Javascript 0 08.01.2009 22:56
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55
Подскажите как при помощи JS hta в трею свернуть kimboo Общие вопросы Javascript 4 11.07.2008 16:00
Не подскажите, как убрать подчеркивание ссылки href? Forgott Общие вопросы Javascript 1 20.05.2008 11:47