2012-06-12 4 views
0

JQuery에서 div 태그의 내용을 변경하여 사용자가 여러 페이지를 통과하는 것처럼 보이게하려고합니다. 내가 가지고있는 방식은 사용자가 단추를 누르면 단추를 누르는 스크립트가 실행되고 div의 내용을 변경하는 것입니다. 이런 식으로 적어도 세 페이지를 갖고 싶었지만 두 번째 페이지 이후에 문제가 생겼습니다. 여기 내가 스크립트에있는 것입니다 : 나는 '1'의 ID로, 첫 페이지에 버튼을 클릭하면JQuery 변경 내용

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 

$(document).ready(function() { 

$("#1").click(function() { 
$("#leftPart").html('<input type="text" id="blash" value="blash" name="blash" ><input type="text" id="hello" value="hello" name="hello" ><input type="text" id="world" value="world" name="world" ><input type="button" name="submit" id="2" value="Submit" />'); 
$("#rightPart").html(''); 
}); 

$("#2").click(function() { 
$("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input type="text" id="glomp" value="glomp" name="glomp" >'); 
}); 
}); 

그래서, 그것은 두 번째 페이지가 표시되어야 무엇을 화면을 변경합니다. 두 번째 페이지는 몇 가지 물건을 표시하고 '2'라는 ID로 다른 버튼을 만듭니다. 그런 다음 두 번째 페이지에서 '2'라는 ID로 버튼을 클릭하면 아무 것도하지 않습니다. 어떤 도움이 필요합니까? 버튼이 실제로 html에 있지 않고 스크립트로 생성 되었기 때문입니까?

+2

HTML은 숫자 ID를 허용하지 않으므로 숫자 ID를 변경해야합니다.~ 'page1'. – iappwebdev

+1

@ 사이먼 (Simon) : HTML5가 제공하며 대부분의 브라우저에서 처리 할 수 ​​있습니다. 그럼에도 불구하고 어떻게 든 추한 것입니다;) –

+0

좋아, 나쁜 댓글. 다시 : W3C 표준 HTML 규칙에 따라 허용되지 않습니다. http://www.w3.org/TR/html4/types.html#type-name – iappwebdev

답변

2

id가 "2"인 버튼이 클릭 이벤트에 바인딩 된 이후에 생성 되었기 때문에이 새로운 버튼은 det가 아닙니다. 클릭 이벤트를 재 바인드하지 않는 한 영향을받습니다. 더 나은 옵션은 click() 대신 on()을 사용하는 것입니다.이 작업은 자동으로 수행됩니다.

$(document).ready(function() { 

    $("#1").on('click', function() { 
     $("#leftPart").html('<input type="text" id="blash" value="blash" name="blash" ><input type="text" id="hello" value="hello" name="hello" ><input type="text" id="world" value="world" name="world" ><input type="button" name="submit" id="2" value="Submit" />'); 
     $("#rightPart").html(''); 
    }); 

    $("#2").on('click', function() { 
     $("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input type="text" id="glomp" value="glomp" name="glomp" >'); 
    }); 

}); 
+0

이'$ ("# 2") .on (function()'on의'.on' 구문은 미래의 요소에서 작동하지 않을 것이고, 그것은'.click'과 같다. –

+0

우리는 항상 이런 식으로 사용하는 것으로 알고 있습니다. – Viezevingertjes

+0

죄송합니다.이 경우에는'# (Static_parent) .on (event, selector, callback) 2 '는 on 호출 전에 추가되고 있습니다. 그러나 동적으로 추가 된 요소에 대해서는'$ (docu .) ('click', "# 2", function()'문법. –

0

예. 이는 이벤트가 웹 페이지에 첨부 될 때 '2'버튼이 DOM에 없기 때문입니다. 당신이 더 많은 것을 위해 jQuery를

또한 참조 할 수 있습니다 'Event binding on dynamically created elements?'의 이전 버전을 사용하는 경우

+0

.live 그래서 당신은 그것을 사용해야합니다 –

+0

그것은, 그래서 당신이 '그것을 사용해야합니까? 거기에 오타가 있습니까? – Playmaker

+0

그래, 내가 그것을 잊어 버려야한다. (그리고 여기에 나는 의미한다.) 사용해서는 안된다. (비추천이기 때문에) –

0

동적으로 생성 되었기 때문에 적합합니다.

$("#2").click(function() { 
$("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input type="text" id="glomp" value="glomp" name="glomp" >'); 
}); 
}); 

$("#leftPart").on("click","#2",function() { 
    $("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input   type="text" id="glomp" value="glomp" name="glomp" >'); 
}); 

지금 아이디 2 leftPart와 미래의 모든 요소가있을 것이라는 점을 보장한다 : 당신은이 문제를

변화 당신에게 코드를 방지하기 위해 .on을 사용할 수 있습니다 위 이벤트 핸들러

+0

'.on'의 문법이 올바르지 않습니다. –

+0

@Joy 무슨 뜻입니까? '$ .on'을 쓰지 않았습니다. –

+0

이전 문법'$ ("# leftPart")을 의미합니다. ("# 2", "click", function()'이 올바르지 않습니다. 구문을 수정했습니다. –

1

버튼을 동적으로 생성하기 때문입니다. 클릭 이벤트를 위임하려면 .on()을 사용해야합니다. #2 버튼이 준비되지 않았기 때문에 버튼이 생성되지 않아 작동하지 않습니다. 'body'는 선택된 버튼의 부모 요소로 대체 ​​될 수 있습니다. 그들이이

$("#2").click(function() { 
    $("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input type="text" id="glomp" value="glomp" name="glomp" >'); 
}); 

$(document).on('click',"#2",function() { 
    $("#rightPart").html('<input type="text" id="meep" value="meep" name="meep" ><input type="text" id="glomp" value="glomp" name="glomp" >'); 
}); 

숫자 값이 유효하지 않습니다 아이디의입니다

$('body').on('click','#2',function(){ 
1

변화에 유효하지 않은 것처럼 또한이 ID 년대와 같은 번호를 사용하지 않아야 유효한 ID를 사용 .