2012-01-09 2 views
0

Im пытается получить последнюю строку из URL, например ...Получить последнюю строку из URL с JQuery

http://www.mywebsite/blog/this-post 

Я хочу использовать JQuery, чтобы получить «этот пост-» Ive следующее .. .

$('img.gigthumb').each(function(){ 
    var foo = $(this).parent().attr('href').split('/'); 
    $(this).attr('src','/lic/wp-content/uploads/2012/01/'+foo[1]+'.jpg'); 
}) 

только он не работает, и я предполагаю, то потому что у меня есть несколько «/» в URL, идеи, как предназначаться только последний?

Надеюсь, что это имеет смысл!

+0

Возможный дубликат [jQuery для анализа нашей части URL-адреса] (http://stackoverflow.com/questions/6894093/jquery-to-parse-our-a-part-of-a-url- path) –

+0

Привет, я просто думаю, что это присвоено, чтобы вы знали о производительности '.pop()' vs 'arr [arr.length-1]' http://jsperf.com/pop-vs-arr-length-1 – ajax333221

ответ

5

Это именно то, что .pop() сделано для:

$('img.gigthumb').each(function(){ 
    var foo = $(this).parent().attr('href').split('/').pop(); 
    $(this).attr('src','/lic/wp-content/uploads/2012/01/' + foo + '.jpg'); 
}); 
+0

+1 никогда не думал о поп-музыке в этом контексте. –

+0

ничего себе, никогда не слышал о .pop раньше, спасибо большое! – Liam

+1

У меня есть сомнения по поводу использования '.pop()' вместо 'foo [foo.length-1]' – ajax333221

1

Не используйте элемент с индексом 1 foo, но последний:

$(this).attr('src','/lic/wp-content/uploads/2012/01/'+foo[foo.length-1]+'.jpg'); 
0

После вашего примера вам нужен последняя часть разбиений:

$('img.gigthumb').each(function(){ 
    var foo = $(this).parent().attr('href').split('/'); 
    var last = foo.length - 1; 
    $(this).attr('src','/lic/wp-content/uploads/2012/01/'+foo[last]+'.jpg'); 
}) 
0
var foo = $(this).parent().attr('href').replace(/^.*\\/, ''); 
1

Расщепление с «/» даст вам массив:

foo[0] = "http:" 
foo[1] = "" 
foo[2] = "www.mywebsite" 
foo[3] = "blog" 
foo[4] = "this-post" 

Если вы хотите, чтобы получить последний пункт независимо от размера массива делают:

foo[foo.length - 1] 

или как упоминалось Джозеф: foo.pop()

+1

+1 '.pop()' медленнее, потому что он модифицирует массив (удалив последний элемент). здесь есть доказательство http://jsperf.com/pop-vs-arr-length-1 – ajax333221

Смежные вопросы