Один из способов получить значение нужного нам параметра – регулярные выражения. Его и рассмотрим.
Как в jQuery сделать проверку на url параметр
Получить адресную строку сайта можно несколькими способами. Посмотреть что получается вы можете прописав в консоле вашего браузера, например так:
window.location.search window.location.href
И если в том же PHP мы бы разбирались с этим гораздо проще:
if ($_GET['param'] == 'Y') {..}
То для этой задачи мы будем использовать регулярные выражения:
$(function(){ $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^]*)').exec(window.location.href); if (results == null) { return 0; } return results[1] || 0; } //...
И хотя строка if (results == null) { выглядит не сильно красиво, но её нужно оставить чтобы избежать ошибки в консоле. А если у вас есть более красивое решение – поделитесь в комментариях 🙂
Используем нашу функцию:
let $urlOffer = $.urlParam('offer');
Тут мы проверяем параметр offer, то есть смотрим наш url на наличие, к примеру ?offer=123.
Далее задействуем значение этого параметра в нашем скрипте:
if ($urlOffer && $urlOffer > 0) { $('.prod-item').each(function() { let $this = $(this), $id = $this.data('offer-id'); if ($urlOffer == $id) { $this.click(); return false; } }); }
В данном примере мы обходим нужные нам элементы через цикл each и при совпадении нужного нам результата прерываем его – return false; Сам же id мы записали в data атрибут, который полностью выглядит так:
data-offer-id="123"
Давайте попробуем упростить код и сделать его без циклов:
if ($urlOffer && $urlOffer > 0) { $('.values-product__choice[data-offer-id="'+$urlOffer+'"]').click(); }
Такой вариант тоже отлично работает.