Jestem nowy w JQuery.JQuery Jak wyodrębnić wartość z tagu href?
Jeśli mam następującą etykietę. Jaka jest najlepsza metoda JQuery , aby wyodrębnić wartość "strony" z pliku href.
<a href="Search/Advanced?page=2">2</a>
Malcolm
Jestem nowy w JQuery.JQuery Jak wyodrębnić wartość z tagu href?
Jeśli mam następującą etykietę. Jaka jest najlepsza metoda JQuery , aby wyodrębnić wartość "strony" z pliku href.
<a href="Search/Advanced?page=2">2</a>
Malcolm
Pierwszą rzeczą, która przychodzi do mój umysł jest regex jedno-liner:
var pageNum = $("#specificLink").attr("href").match(/page=([0-9]+)/)[1];
Przede wszystkim trzeba wyodrębnić ścieżkę z mniej więcej tak:
$("a#myLink").attr("href");
Następnie przyjrzeć się tej wtyczki: http://plugins.jquery.com/project/query-object
będzie to pomoże zajmujesz się wszystkimi typami zapytań, które chcesz zrobić.
/Peter F.
Użyj tego jQuery extension James Padoley
widzę dwie opcje tutaj
var link = $('a').attr('href');
var equalPosition = link.indexOf('='); //Get the position of '='
var number = link.substring(equalPosition + 1); //Split the string and get the number.
nie wiem, czy masz zamiar używać go do stronicowania i mieć tekst w etykiecie <a>
-tak jak to masz, ale jeśli powinieneś to zrobić, możesz również wykonać
var number = $('a').text();
Twoje pierwsze rozwiązanie nie będzie działać, jeśli istnieją inne argumenty na link: Szukaj/zaawansowane = mysearch & page = 2 Inną kwestią jest to, że działa tylko z pojedynczymi stronami znaków. Nie zadziała na stronie 12, na przykład –
Tak, wiem o innych argumentach, może powinienem to uwzględnić w odpowiedzi. Ale dlaczego nie miałby działać z wieloma postaciami? –
Odpowiedź działa dla wielu znaków. Właściwie to właśnie przetestowałem to w Firebug. Pojedynczy argument dla podłańcucha jest początkową lokalizacją podłańcucha, jeśli drugi argument nie zostanie określony, po prostu odczyta koniec łańcucha. Nadia przedstawia dobry punkt dotyczący wielu argumentów. –
Oto metoda, która działa poprzez przekształcenie ciągu kwerendy do JSON ...
var link = $('a').attr('href');
if (link.indexOf("?") != -1) {
var query = link.split("?")[1];
eval("query = {" + query.replace(/&/ig, "\",").replace(/=/ig, ":\"") + "\"};");
if (query.page)
alert(unescape(query.page));
else
alert('No page parameter');
} else {
alert('No querystring');
}
pójdę z biblioteki jak inni sugerują, chociaż ... =)
Zdecydowanie nie polecam używania żadnej próbki z 'eval()', ponieważ może ona wprowadzić ataki XSS. –
if ($('a').on('Clicked').text().search('1') == -1)
{
//Page == 1
}
else
{
//Page != 1
}
To wcale nie odpowiada na pytanie. Co jeśli numer strony to 2? –
Należy zauważyć, że nie będzie to doskonałe i zwróci fałszywe alarmy na takie rzeczy, jak 'thepage = 123'. O ile nie możemy być pewni, że adres URL zawsze podąża za tą dokładną strukturą, bardziej odpow- iednie może być przeanalizowanie całego zapytania. – Matchu
Możemy również rozważyć odszukanie '[? &]' Na początku. – Matchu
Po prostu ciekawy, jakie jest znaczenie "[1]" na końcu? – escist