2013-03-03 4 views
0

링크가 포함 된 일부 리를 반복합니다.링크 URL의 특정 부분을 검색하는 가장 좋은 방법은 무엇입니까?

링크는 다음과 같이 할 수 있습니다

<a href="http://localhost/mlp/books/">Books</a> 

...뿐만 아니라 ...

<a href="movies/">Movies</a> 

내가 원하는 것은 링크 (책과 영화의 마지막 수준을 검색하는 것입니다 위의 경우) 배열에 넣습니다.

가장 좋은 방법은 무엇입니까?

var listOptions = []; 

$('#navigation ul').each(function(index){ 
    var link = $(this).children().html(); 
    ? 
}); 

답변

1

나는 이렇게 jQuery map을 사용할 것이다;

var listOptions = $('#navigation ul').map(function() { 
    var href = $(this).find('a').prop('href'); 

    // Handle a trailing '/', which will screw things up 
    if (href.slice(-1) === '/') { 
     href = href.slice(0, -1); 
    } 

    var last = href.lastIndexOf('/'); 

    // Handle href="foo"; 
    if (last === -1) { 
     last = 0; 
    } 

    // Return the last part of the URL. 
    return href.slice(last); 
}).get(); 

listOptions 이제 URL의 마지막 부분의 배열이됩니다.

2

당신의 HTML 구조가 정확히 무엇인지,하지만 당신은 앵커 태그에 얻을 수있는 가정하지 않음 :이 또한 모든 링크가 / 후행 한 것으로 간주합니다

$('a').each(function (index) { 
    var tokens = this.href.split('/') 
     , link = tokens[tokens.length - 2]; 

    // link is now "books" or "movies" 
}); 

하는 것으로.

예 :http://jsfiddle.net/JVQsm/

1

배열에 넣어하려면 :

$('#navigation ul li a').attr('href', function(i, href) { 
    var arr = href.split('/'); 
    return arr[arr.length-2]+'/'; 
}); 

:

var listOptions = $.map($('#navigation ul li a'), function(el,i) { 
    return el.href.slice(0,-1).split('/').pop(); 
}); 

//listOptions now contains ['books', 'movies'] etc 

FIDDLE

그냥 사이트에 그들을 대체하기

1

아마 이런 일이 :

var listOptions = []; 

$('a').each(function() { 
    var trimmed = $(this).prop('href').slice(0, -1); 
    listOptions.push(trimmed.substring(trimmed.lastIndexOf('/') + 1)); 
}); 

당신은 모든 링크에서 / 후행했다. 항상 그렇다면 먼저 제거해야합니다.
변수가 trimmed에 저장되고 마지막 부분이 추출됩니다.

항상 그런 것은 아니지만 로직을 조금 확장 할 수 있습니다. 마지막 문자가 /인지 확인한 다음 제거하십시오. 그렇지 않으면 아무것도 제거하지 마십시오

관련 문제