2016-07-14 2 views
0

와 HTML 블록을 복사합니다. 결과 :나는 같은 HTML 코드를 태그 스크립트

<div> 
    <div id="1-text">text></div> 
    <script>$("#text").val('some value');</script> 
</div> 

태그 내부 스크립트 ID를 변경하고 싶습니다. $("#1-text").val('other value'); 어떻게해야합니까?

+2

나는 스크립트 요소를 복제하는 것이 더 좋은 해결책이라고 생각한다. div에는 값이 없습니다. – epascarello

+1

나는 이것을하지 않을 것을 제안 할 것이다. script 요소에서 JS를 편집하는 것은 매우 어려울 것입니다. – evolutionxbox

+0

복사 HTML이 필요합니다. 처리기가 필요합니다. 다른 방법으로 어떻게 처리 할 수 ​​있습니까? 정확한 금액 블록을 모르므로 모든 처리기를 한 번에 쓸 수 없습니다. – Dev

답변

0

외부 선택 변수를 선택하면 무엇을 선택할지 쉽게 알 수 있습니다. 당신은 루프를 사용하여 값을 반복한다면 그래서 당신은 같은 것을 할 수 있습니다

$("#text_"+i).val('other value'); 

또한 카운터를 설정할 수 있습니다와 같은 새로운 div의이 내가 단위를 추가됩니다. 그래서 유연합니다.

최종 목표는 정확히 모르겠지만 <script> 태그에서 javascript를 조작하려는 경우이 방법론을 권장하지 않습니다. 나는 그것이 성가신 것이라고 믿는다.

+0

좋은 방법이지만 유연한 솔루션을 모색 중입니다. datepicker 및 전화 마스크와 같은 스크립트 내부에는 많은 다른 기능이 있습니다. HTML 블록을 복사하면 이전 블록의 모든 기능을 가져오고 싶습니다. – Dev

0

전체 HTML 블록을 복사하려면이 블록에 인라인 자바 스크립트 코드를 컨테이너로 바인딩해야합니다. 이드는 아니야. 따라서 블록을 이동하거나 복사 할 때 스크립트는 컨테이너와 관련된 요소를 찾을 수 있습니다.

<div id="containerOne" class="js-container"> 
    <div class="js-text" data-text="some value">some value</div> 
    <script> 
     var $el = $("script").last().closest(".js-container").find(".js-text"); 
     $el.text($el.data("text")); 
    </script> 
</div> 

여기에서는 ID가 아닌 클래스별로 요소에 액세스 할 수 있습니다. "js-" 접두어를 사용하면 CSS 스타일링이 아닌 javascript 조작 만 가능합니다.

또한 스크립트 자체를 변경할 필요가 없습니다. "data-" 속성을 통해 값을 변경할 수 있습니다.

외부 스크립트에서 다양한 방법으로 모든 복제 논리를 캡슐화 할 수 있습니다. 예 :

var myModule = { 
    clone: function(containerSelector) { 
    var $donorEl = $(containerSelector); 
    var $donorScript = $donorEl.find('script'); 
    $script = $("<script />"); 
    $script.text($donorScript.text()); 
    $recipientEl = $donorEl.clone(); 
    $recipientEl.attr('id', 'containerTwo'); 
    var newValue = 'other value'; 
    $('.js-text', $recipientEl).data('text', newValue); 
    $('body').append($recipientEl); 
    $('script', $recipientEl).replaceWith($script); 
    } 
}; 

myModule.clone('#containerOne'); 

the working example을 볼 수 있습니다.

관련 문제