2009-11-05 2 views
3

무엇?! 나도 알아, 나쁜 생각이야.jQuery를 사용하여 HTML의 onclick 속성에 함수의 내용을 가져 오는 것

처음에는 출력 된 html을 공급 업체로부터 통제 할 수 없으며 회사와 계약을 맺은 미친 시스템을 통해 생산됩니다. html로에서

(의 상황에 대해 이야기하지 말자, 나는 그것이 최적이 아닌 것을 알고) 내가 가진 내 JS에서

<a id="notify" onclick="location.href='index.php?foo=bar';return false;" href="javascript:;">Notify!</a> 

을 내가 할 경우

console.log($("#notify").attr("onclick")) 

내가 받아 봐 :

onclick(event) 

어떤 의미가 있지만 onclick의 속성을 변경해야하므로 다음과 같이 읽습니다.

onclick="location.href='index.php?foo=bar&zoobazz=moo';return false;" 

onclick을 제거하고 href 속성 값을 location.href로 바꿀 수 있다면 더 좋을 것입니다.

답변

5

이 문자열

$("#notify").attr("onclick").toString() 

그렙 나는이 작업을 것입니다 알고

+0

와우.이게 내가 완벽하게 기능하는 예제로 올린 것과 정확히 같다. 나는 그것이 간결하고 핵심에 지불하는 것 같아요. ;) – WesleyJohnson

2
document.getElementById('notify').onclick = function() {location.href='index.php?foo=bar&zoobazz=moo';return false;}; 
+1

후 URL하지만, jQuery를 솔루션 요청한 사용자가 당신에게 기능을 제공합니다 .. . – GmonC

2

$("#notify").click(function() { $("#notify").attr("onclick", "location.href='index.php?foo=bar&zoobazz=moo';"); return false;}) 

당신이해야 할 일을하지

합니까?

+0

우리는 문제는 onclick 속성이 서버에 의해 출력된다는 것입니다. 따라서 값을 얻고 조작해야합니다. –

1

질문에 너무 많이 읽었을 수 있습니다.하지만 OP는 이벤트 코드를 가져 와서 조작 할 수있는 방법을 묻습니다. "index.php? foo = bar"를 지정할 때 bar의 값을 알 수 없다고 생각합니다. 이것이 알려진 값이라면, 왜 onclick 값을 읽어야합니까?

+0

네, 정확히 알고 싶습니다. 나는 attr()을 사용하는 방법을 잘 알고있다. +1을 명확히 해줘서 고마워. –

1
alert($('#notify').click); 

?

3

질문을 올바르게 이해했다면 실제로 onclick 이벤트가 무엇인지보고 대신 추가하는 것이 좋습니다. 나는 크롬에서 이것을 시도하고 작동하지만 꽤 많은 해킹이다. 기본적으로 "클릭"또는 "onclick"이벤트 함수 (jQuery 또는 순수 JS 사용)에 대한 참조를 얻으면 ".toString()"을 사용하여 함수를 문자열로 변환 할 수 있습니다. 그런 다음 몇 가지 속임수를 사용하여 "함수"정의를 제거하면 필요한 항목이 남습니다. "location.href = '.......'.

그런 다음 추가 매개 변수를 추가하십시오. 희망적으로 이것이 올바른 방향으로 인도합니다.

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
    var $target = $("#notify"); 
    var funcBody = $target.attr("onclick").toString().split("\n")[1].split(";")[0]; 
    $target.attr("onclick","").attr("href", funcBody); 
}); 
</script> 
</head> 
<body> 
<a id="notify" onclick="location.href='index.php?foo=bar';return false;" href="javascript:;">Notify!</a> 
</body> 
</html> 
관련 문제