2013-07-11 1 views
-1

필자는 기능을 트리거하는 링크를 자동으로 다시 작성하여 눈에 잘 띄지 않는 JavaScript 코드로 변환해야합니다.주어진 코드를 JavaScript의 함수로 다시 작성하는 가장 좋은 방법은 무엇입니까?

예 :

link_to_function 'hey', "alert('hey')" 

가된다는 :

<a href='#' onclick="alert('hey')"> hey </a> 

내 아이디어는 HTML 요소 기준을 모든 관련된 코드를 저장하는 JS에서 객체를 생성한다.

storageCode[rndReference] = new Function(code) 

각 문자열 :

<a href='#' data-href='rndReference'> hey </a> 

와 JS에서

합니다 ( code 변수가 내가 마크 업에서 밖으로 제거 한 JS 코드입니다) : 그런 다음 깨끗하고 눈에 거슬리지 예에서 전 예 변환 코드를 함수로 부르기 위해 새로운 Function(code)으로 전달됩니다.

이 접근 방식의 문제점은 무엇입니까? 어떤 접근 방식이 더 좋을까요?

답변

0

이것이 정상적인 방법입니다. 당신이 커피 스크립트를 좋아하지 않는 경우,

$ -> 
    $("a[data-role='alert']").on("click", (event) -> 
    event.preventDefault() 
    alert("hey") 
) 

또는 : 정상적인 방법입니다

$(document).ready(function() { 
    $("a[data-role='alert']").on("click", function(event) { 
    event.preventDefault(); 
    alert("hey"); 
    }); 
) 
+0

CoffeeScript 파일에 다음

<a href='#' data-role='alert'> hey </a> 

을 :

<a href='#' onclick="alert('hey')"> hey </a> 

이된다. 임의의 코드를 실행하는 방법에 대해 묻고 싶습니다. 아이디어는 도우미를 통해 전달됩니다. link_to_ujs (http://www.github.com/gagoar/link_to_ujs) –

+0

link_to_ujs가 명백하게 "눈에 거슬리는 자바 스크립트"가 아니라는 점에서 link_to_function을 대체하십시오. 이는 눈에 띄지 않고 링크의 onclick 이벤트에서 실행됩니다. 이 방법이 효과가 있다면 그것을 찾으십시오. –

+0

link_to_ujs는 코드를 JavaScript 개체에 넣고 마크 업의 data-ref를 해당 data-ref를 바인딩하는 코드로 둡니다. 그것은 ujs 모든 방법입니다. 이것은 그 질문의 예와 정확히 같습니다. 두 번째 사람 –