2013-02-05 3 views
3

나는 작동하지 않는, 지금까지이 코드를 가지고 :링크 URL에 무언가를 추가하는 더 깨끗한 방법은 무엇입니까?

$('.passName').click(function(){ 
    var schoolName = "18734"; 
    var link = $(this).attr('href'); 
    var newLink = link + schoolName; 
    $(this).attr('href') = newLink; 
}); 
+0

'$ (이) .attr ('HREF') = newLink,'오류를 얻을 수 – dezman

+0

일부 이것이 어떻게 사용되고 있고 작동하지 않는가에 대한 배경이 도움이 될 것입니다. – simnom

+0

링크를 변경하면 onclick의 문제는 다른 탭을 타겟으로 열면 링크가 커지는 것입니다 ... –

답변

11

를 수행

$(this).attr('href', newLink); 
+0

항상 문서를 읽는 데 도움이됩니다! http://api.jquery.com/attr/ – ajp15243

+0

아, 감사합니다. – dezman

+2

... 또는이 경우에는 'this.href = newLink;'입니다. – raina77ow

8

당신의 접근 방식에 문제가 있습니다 : 당신이에 schoolName를 추가하고 사용자가 다른 탭을 타겟팅하더라도 클릭 할 때마다 URL

$('.passName').click(function(){ 
     var schoolName = "18734"; 
     var link = this.href; 
     if (link.indexOf(schoolName, link.length - schoolName.length)!==-1) { 
      this.href = link+schoolName 
     } 
    }); 

나 :

$('.passName').click(function(){ 
      location.href = this.href + "18734"; 
    }); 

또는 적어도 당신이 전에를 추가하지 않은 확인 :

그래서 나는 href 속성 엉망에 제안하지만, 클릭에 작업을 할 거라고 Felix Kling이 제안한 것처럼 함수가 한 번만 호출되도록하십시오.

$('.passName').one('click', function(){ 
     this.href += "18734" 
    }); 
+2

아니, 당신은 8 upvotes 이길 수 없어 ... 시간이 지나가고 : P – VisioN

+2

@ VisioN 알지만,이게 더 합리적인 것 같습니다 :) –

+1

끝내 ... 이것은 내가 당신의 대답을 따르는 이유입니다 !! –

0

새로운 jQuery를 개체를 만들 필요가 없습니다, 당신은 단순히 가질 수

$('.passName').click(function() { 
    var schoolName = "18734"; 
    this.href += schoolName; 
}); 

라이브러리 jQuery를 유용하지만 우리는 일반 자바 스크립트와 DOM을 잊고 안 등.

또한 JS에서는 함수 호출에 실제로 "할당"할 수 없습니다. jQuery를에 속성의 값을 설정하는 방법이 간단한에서 $(this).attr('attr', newLink)

1

수행이 방법 : -

$('.passName').click(function() { 
    $(this).attr('href', this.href+'18734'); 
}); 
+0

평범한'this'를 한 곳에서 사용하는 것이 옳은가요?하지만 다른 곳에서는 그렇지 않습니다. 'this.href + = '18734'만 쓰면됩니다. – raina77ow