jQuery – как получить значение GET параметра

Один из способов получить значение нужного нам параметра – регулярные выражения. Его и рассмотрим.

Как в 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();
}

Такой вариант тоже отлично работает.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *