Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jQuery выборка значения соседней ячейки 
V
    Опции темы
Prontit
  Дата 12.5.2014, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Здравствуйте,

имею следующую табличку:

Код

<table>
    <tr>
        <td></td>
        <td>
            <select onchange="my_clever_funtion(this);">
                <option value="1">а</option>
                <option value="2">б</option>
                <option value="3">ц</option>
            </select>
        </td>
        <td>777</td>
    </tr>
....................и много много таких строк
</table>


нужно, чтобы my_clever_funtion могла брать value из выбранного option и записывать его в соседнюю td, в данном примере, вместо "777"

были какие-то такие варианты, чтобы получить значение этой ячейки, но даже это не получилось...:

Код

$(this).parent('tr:first-child').text();


но не могу понять, как мне "выбраться" из select в ее родителя td, например, и получить/записать данные td стоящую сразу по соседству или любую другую...
много перебирал сочетаний first-child, parent и тд и тп, но ничего не вышло.

Подскажите, пожалуйста, Уважаемые Знатоки JS.
PM MAIL ICQ Skype   Вверх
Prontit
  Дата 12.5.2014, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



сделал так 

Код

function my_clever_funtion(elem)
{
        //записываю в переменную выбранное value
    txt = $(elem).find('option:selected').val();

        //вытаскиваю через родителя следующий элемент, т.е. td
    my_elem = $(elem).parent().next();

    //ну и собственно пишу так текст
    my_elem.text(txt);
}


это нормальное решение? и можно ли как-то оптимизировать?

на ум только 
Код

$(elem).parent().next().text($(elem).find('option:selected').val());

приходит)))
PM MAIL ICQ Skype   Вверх
Prontit
Дата 13.5.2014, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Другая возникла проблема, та же функция 

Код

function my_clever_funtion(elem)


куда передаю 
Код
this
, и хочу сделать вот так


Код

$(".drivers option[value=' $(elem).find('option:selected').val() ']").not($(elem)).remove();


т.е. удалить у всех select'ов класса drivers, кроме текущего, элемент с value который выбран в текущем...срабатывает, но удаляется везде, даже в текущем...не работает not...
PM MAIL ICQ Skype   Вверх
Aliance
Дата 13.5.2014, 09:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Это не оптимизация. Конечно это аналогично написанному выше, но полностью убирать переменные не всегда хорошая практика. Первое решение, с этой точки зрения, видится мне более читабельным, чем одностроковый код. Разве что у вас все переменные - глобальные, это только не гуд. Не забываем ключевое слово var.

Далее, получить значение select`a в jQuery можно намного проще - $(selectSelector).val(), без условия на выбор выбранного option`а.

В остальном же, без указания классов/ID`шников это единственное адекватное решение, нет смысла его оптимизировать.

Код на удаление всех, кроме текущего, наверное все же должен выглядеть так:
Код

$(".drivers option[value='" + $(elem).find('option:selected').val() + "']").not($(elem)).remove();


И совет: если у вас в скрипте используется дублирующийся селектор - выносите его в переменную, вот вам и оптимизация smile

Но в данном случае в not можно передавать нативную ссылку на элемент: http://jsfiddle.net/Aliance/RBg8Q/

PS: наверное все же my_clever_funCtion
PM MAIL WWW ICQ Skype   Вверх
Prontit
Дата 13.5.2014, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Цитата(Aliance @ 13.5.2014,  09:28)
Это не оптимизация. Конечно это аналогично написанному выше, но полностью убирать переменные не всегда хорошая практика. Первое решение, с этой точки зрения, видится мне более читабельным, чем одностроковый код. Разве что у вас все переменные - глобальные, это только не гуд. Не забываем ключевое слово var.

Далее, получить значение select`a в jQuery можно намного проще - $(selectSelector).val(), без условия на выбор выбранного option`а.

В остальном же, без указания классов/ID`шников это единственное адекватное решение, нет смысла его оптимизировать.

Код на удаление всех, кроме текущего, наверное все же должен выглядеть так:
Код

$(".drivers option[value='" + $(elem).find('option:selected').val() + "']").not($(elem)).remove();


И совет: если у вас в скрипте используется дублирующийся селектор - выносите его в переменную, вот вам и оптимизация smile

Но в данном случае в not можно передавать нативную ссылку на элемент: http://jsfiddle.net/Aliance/RBg8Q/

PS: наверное все же my_clever_funCtion

Благодарю за ответ!

Но при варианте,
Код

$(".drivers option[value='" + $(elem).find('option:selected').val() + "']").not($(elem)).remove();


этот элемент удаляется и в текущем селекте, не работает not почему-то...

Это сообщение отредактировал(а) Prontit - 13.5.2014, 11:14
PM MAIL ICQ Skype   Вверх
Aliance
Дата 13.5.2014, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата(Prontit @  13.5.2014,  12:13 Найти цитируемый пост)
этот элемент удаляется и в текущем селекте, не работает not почему-то...

Ну наверное потому, что нужно не просто скопипастить кусок кода, что я написал, а изменить его самостоятельно с учетом тех правок, что я написал выше.
PM MAIL WWW ICQ Skype   Вверх
Prontit
Дата 13.5.2014, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Цитата(Aliance @ 13.5.2014,  12:09)
Цитата(Prontit @  13.5.2014,  12:13 Найти цитируемый пост)
этот элемент удаляется и в текущем селекте, не работает not почему-то...

Ну наверное потому, что нужно не просто скопипастить кусок кода, что я написал, а изменить его самостоятельно с учетом тех правок, что я написал выше.

Код

    $(".drivers").on('change', function() {
        $(".drivers option[value='" + $(this).find('option:selected').val() + "']").not(this).remove();
    });


что не так сделал?

Это сообщение отредактировал(а) Prontit - 13.5.2014, 12:42
PM MAIL ICQ Skype   Вверх
Aliance
Дата 13.5.2014, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Потому что селектор ищет option`ы, а потом метод not говорит, что нужно из найденной коллекции исключить элемент, равный select. А любой из option != select, поэтому и удаляются все.

Вот рабочий вариант: http://jsfiddle.net/Aliance/RBg8Q/2/
PM MAIL WWW ICQ Skype   Вверх
Prontit
Дата 13.5.2014, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 19.10.2011

Репутация: нет
Всего: 1



Цитата(Aliance @ 13.5.2014,  13:16)
Потому что селектор ищет option`ы, а потом метод not говорит, что нужно из найденной коллекции исключить элемент, равный select. А любой из option != select, поэтому и удаляются все.

Вот рабочий вариант: http://jsfiddle.net/Aliance/RBg8Q/2/

понял ошибку. Благодарю за помощь!
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.