2013-02-25 1 views
2

을 포함하는 경우,하지만 난 JQuery와 테스트가 URL이 이미 매개 변수 이것에 대해 많은 질문이 알고

필요 정확히 발견 didnt한다입니다 그것은 내가 원하는 매개 변수로 내 URL을 생성 훌륭한. 하는 추가하여

http://www.blabla.com/search?search=cat&filter_duration=short&filter_duration=medium&filter_duration=long

내가 고정 시도 : 문제는 내가 (이 필터는 모든 페이지를 볼 수 있습니다) 여러 번 클릭하면, 그것은이 같은 URL을 생성, 반복해서 같은 매개 변수를 추가 점이다 조건 :

$j('.showCategory li a').each(function() { 
    if(this.href.indexOf('filter_category') == -1) { 
     var catId = $j(this).attr("data-id"); 
     this.href += (/\?/.test(this.href) ? '&' : '?') + 'filter_category='+ catId; 
    } else { 
     ???? 
    } 
}); 

그러나이 경우 매개 변수를 추가하지 않고 값을 대체하지 않습니다. 어떻게 해결할 수 있습니까? 정규식에서 적절한 교체 할

답변

2

사용이 패턴 :

} else { 
this.href = this.href.replace(/filter_duration=(.+?)(&|$.*)()/, "filter_duration=" + catId + "$2" 
} 

이 기존 filter_duration 요소 쿼리 매개 변수를 찾기 위해 캡처 그룹을 사용하고, 새 값 제자리에 기존 값을 대체 (이 경우 catId). 이것은 문자열의 마지막 쿼리 매개 변수인지 여부에 관계없이 작동해야합니다.

그런데, 나는이 솔루션을 최적으로 생각하지 않을 것이다. 그리고 클라이언트 사이드 자바 스크립트 오브젝트에서 URL에 원하는 값을 저장하는 것이 더 나을 것이다. 그리고 URL을 처음부터 다시 만들면된다. 누구든지 카테고리를 변경할 때마다. 이렇게하면 대체품이 잘못되어 클라이언트가 나쁜 상태가되는 경우를 테스트하기가 어렵다는 것을 걱정할 필요가 없습니다.

관련 문제