2010-01-21 3 views
0

jQuery로 연습하면서 약간의 상호 작용을 작성하려고합니다. 사용자가 단어 (태그)를 제출 한 다음 <div id="currentTags"></div> 내에 새 DOM 요소로 표시합니다. 그러나 newTag가 깜박 인 다음 즉시 사라집니다.jquery : 새로운 DOM 요소 삽입이 사라짐

무엇이 누락 되었습니까?

$("form").submit(function() { 
    var $newTag = $("input:first").val(); 
    if ($newTag.length < 20) { 
    // adds an a success alert in an empty span 
    $("span").text("Added. Add more?").show(); 
    $("<div class='insertedTag'>"+$newTag+"</div>").insertAfter("#currentTags"); 
    return true; 
    } 
    $("span").text("Less than 20 characters please.").show().fadeOut(2500); 
    return false; 
}); 

답변

3

진실한 진술로 인해 양식이 제출 될 수 있습니다. 모든 경우에 false를 반환하거나 preventDefault()를 사용하여 작업을 중지하려고합니다. 내가 잘못했을 때 사용자가 일을 올바르게 할 때 true로 되돌릴 것을 생각할 수 있다고 생각하지만 실제로 제출 이벤트에 값을 반환하면 다음 중 하나를 말합니다.

true = 예,이 양식을 제출하십시오.

거짓 = 아니, 대신에이 시도 형태

를 제출하지 않습니다

$("form").submit(function(e) { 
e.preventDefault(); 
// rest of logic 
} 

모든 이벤트가 (내가 여기서 뭐하는 것 같은 일반적으로 "E"이라한다) 묵시적 매개 변수가 있습니다 preventDefault()를 호출하여 정상 동작을 중지 할 수 있습니다. (이 경우 양식 제출이 중단됩니다).

+0

좋아요. 고마워요. 저는 Learning jQuery를 읽고 그것에 대해 잊어 버렸습니다. 모든 이벤트에 암묵적인 매개 변수가 있음을 지적 해 주셔서 감사합니다. 그처럼 작고 명백한 내용은 속도를 따라 잡고있는 나 자신과 같은 새로운 사람이 쉽게 간과 할 수 있습니다. –

0

왜 간단한 형태로 꾸미는거야? 내가 할 수있는 유일한 이유는 아약스를 사용하고 자바 스크립트가 비활성화 된 경우 정상적으로 성능이 저하 될 필요가있을 때입니다. 이 같은 단순화 할 수있다 찾고있는 무엇

:

$(document).ready(function() { 
    $("#id_of_add_button").click(function() { 
     var newTag = $("input:first").val(); 

     if (newTag.length < 20) { // adds a success alert in an empty span 
      $("span").text("Added. Add more?").show(); 
      $("#currentTags").after(" " + newTag); 
     } else { 
      $("span").text("Less than 20 characters please.").show().delay(2500).fadeOut(500); 
     } 
    }); 
}); 
+0

감사합니다. Ariel. 코드 단순화에 대한 자세한 내용은 제가 수행중인 작업입니다. 3 줄의 코드를 만드는 법? 따라서 비교/대조 할 수있는 기회가 주어집니다. jQuery 객체 인 $ before 변수를 사용하고 있으므로이 사실을 추적하지는 않습니다. 빠른 답장을 보내 주셔서 감사합니다. 정말 대단해! –

+0

$를 사용하여 var를 시작하는 것은 좋은 방법이지만 결과 개체가 전체 jquery 개체 인 경우에만 사용해야합니다. 당신의 경우에는 그렇지 않았습니다. 그것은 단지 텍스트였습니다. – Ariel