Перейти к содержанию
ArtemPitov

Изучаем jquery вместе )

Рекомендуемые сообщения

Доброго времени суток, по немного познаю jquery, столкнулся с такой штукой, не могу найти что означает this или $(this)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$(this)[0] === this

this - этом DOM элемент в контексте вызова. $() - конструктор jQuery инициализирующийся этим элементом, для того чтобы выполнять методы jQuery над ним.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ 

 

а вот такой this что означает в button или select onchange="вызов кой то функции (this)"   ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

элемент в контексте вызова

Для onchange это eventObject значение которого изменилось, ведь один обработчик можно сразу навешивать на несколько элементов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понял спасибо за подсказку, а то гуглил - гуглил и не выгуглил )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто скачайте какую-то книгу по jquery их десятки если не сотни и прочитайте, отпадет 99.9% вопросов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток, по немного познаю jquery, столкнулся с такой штукой, не могу найти что означает this или $(this)

 

Для начала вам неплохо было бы понять, что есть this в JavaScript.

 

разница описана здесь: http://web-answers.ru/questions-and-answers/javascript/jquery/jquery-raznitsa-mezhdu-this-i-this/

 

6uy7Jdr.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подыму темку.

Плагин jQuery cookie. Иногда необходимо выводить сообщение во всех товарах определенной категории и потом установить для этого сообщения cookie на какой-то срок.

Если ссылка у товара ЧПУ, то все красиво получается. А вот если не ЧПУ, то cookie устанавливается для всего домена.

Попытка через location.pathname + location.search не удалась.

Где заблудился?

Изменено пользователем klaos27

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

устанавливать куку с указанием id

mycookie = category_id

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как вариант

$.cookie("category_id", ["55", "56"]);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это единичный случай. правильно понимаю?

А если есть настройка, например "Ограничить сеансом пользователя", и модуль с такой настройкой применять к товарам разных категорий. Т.е.:

1) Текст сообщения (модуль 1) - товары категории 1

2) Другой текст сообщения (модуль 2) - товары категории 2.

Повторюсь если ссылки товара ЧПУ, то путь у cookie -" /категория/товар/". Если ссылка товара не ЧПУ, то путь у cookie - "/"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторюсь если ссылки товара ЧПУ, то путь у cookie -" /категория/товар/". Если ссылка товара не ЧПУ, то путь у cookie - "/"

rtfm

я серьёзно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый день!
Смысл такой. Есть две опции с типом select и image. Они совмещены в одну чтобы выбрал в одной, значение выбралось и в другой.
для версии 1.5 строка, которая за все это дело отвечает, выглядит следующим образом и работает отлично

<select onchange="$(this).parent().find('input[value='+$(this).val()+']').attr('checked','checked').trigger('change');"> 

Если сие дело ставить на oc 2.1 где версия jquery 2.1.1, то в консоли получаем

Uncaught Error: Syntax error, unrecognized expression: input[value=]

гугл поискал и сказал что надо сделать так

.find('input[value="' + $(this).val() + '"]')

Но при этом из-за двойных кавычек все ломается.

 

Буду рад любым соображением на этот счет.
 
 

Изменено пользователем klaos27

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый день!

Смысл такой. Есть две опции с типом select и image. Они совмещены в одну чтобы выбрал в одной, значение выбралось и в другой.

для версии 1.5 строка, которая за все это дело отвечает, выглядит следующим образом и работает отлично

<select onchange="$(this).parent().find('input[value='+$(this).val()+']').attr('checked','checked').trigger('change');"> 

Если сие дело ставить на oc 2.1 где версия jquery 2.1.1, то в консоли получаем

Uncaught Error: Syntax error, unrecognized expression: input[value=]

гугл поискал и сказал что надо сделать так

.find('input[value="' + $(this).val() + '"]')

Но при этом из-за двойных кавычек все ломается.

 

Буду рад любым соображением на этот счет.

 

 

пробуйте так .find('input[value=\' + $(this).val() + \']')

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пробуйте так .find('input[value=\' + $(this).val() + \']')

Благодарю. В консоли ошибок нет, но при таком раскладе далее .attr('checked','checked').trigger('change'); перестает работать, так не присваивается checked и нет связки со второй опцией

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то очень мудрено

 

Смысл такой. Есть две опции с типом select и image. Они совмещены в одну чтобы выбрал в одной, значение выбралось и в другой.
для версии 1.5 строка, которая за все это дело отвечает, выглядит следующим образом и работает отлично

<select onchange="$(this).parent().find('input[value='+$(this).val()+']').attr('checked','checked').trigger('change');">

давайте разберем

 

$(this).parent().find('input[value=+$(this).val()+]').attr('checked','checked').trigger('change')

 

 

$(this) //- сам селект

.parent() // родитель

.find('input[value=+$(this).val()+]') // ищем нужный инпут по значению селекта

.attr('checked','checked') // устанваливаем checked - это должен быть input type="radio" или "checkbox"

 

.trigger('change') - вызываем событие , а к этому инпуту событие подвязано?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то очень мудрено

 

.trigger('change') - вызываем событие , а к этому инпуту событие подвязано?

в инпуте это

onchange="recalculateprice(<?php echo $option_value['product_option_value_id']; ?>);"

Работающий пример

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лучше показать не работающий

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

лучше показать не работающий

здесь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ок. по шагам

до

$(this).parent().find('input[value='+$(this).val()+']').attr('checked','checked').trigger('change');">

после

<select onchange="$('.option-image input').parent().find('input[value=' + $(this).val() + ']').prop('checked', true).trigger('change');

где здесь this

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ок. по шагам

до

$(this).parent().find('input[value='+$(this).val()+']').attr('checked','checked').trigger('change');">

после

<select onchange="$('.option-image input').parent().find('input[value=' + $(this).val() + ']').prop('checked', true).trigger('change');

где здесь this

 

на той странице я уже сломал все :)

Вот здесь лучше посмотреть 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но это в FF работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но это в FF работает

Неа. выбирается первый раз. Если пойти на второй и более круг, то...вот попробуйте. И нельзя сбросить к первоначальному виду.

Вот работающий пример

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$('input[value=+ $('#option-238 select').val() +]').prop('checked','checked')

 

вот так у меня работает

 

prop('checked','checked') !!!

Изменено пользователем chukcha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.