Jump to content
Sign in to follow this  
ArtemPitov

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

Recommended Posts

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

Share this post


Link to post
Share on other sites
$(this)[0] === this

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

 

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

6uy7Jdr.png

Share this post


Link to post
Share on other sites

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

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

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

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

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

Edited by klaos27

Share this post


Link to post
Share on other sites

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

mycookie = category_id

Share this post


Link to post
Share on other sites

как вариант

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

rtfm

я серьёзно

Share this post


Link to post
Share on other sites

Всем добрый день!
Смысл такой. Есть две опции с типом 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() + '"]')

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

 

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

Edited by klaos27

Share this post


Link to post
Share on other sites

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

Смысл такой. Есть две опции с типом 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() + \']')

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Смысл такой. Есть две опции с типом 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') - вызываем событие , а к этому инпуту событие подвязано?

Share this post


Link to post
Share on other sites

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

 

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

в инпуте это

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

здесь

Share this post


Link to post
Share on other sites

Ок. по шагам

до

$(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

Share this post


Link to post
Share on other sites

Ок. по шагам

до

$(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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

Edited by chukcha

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.