2012-11-28 5 views
0

편집 나는배열 출력에서이`#`는 어디서 오는 것입니까?

$(".taskList ul li p").html(outputTime); 

/편집 나는 필드가 변경 될 때 타이머를 시작하는 콜백 함수와 jQuery를 Jeditable 플러그인을 사용하고 있습니다에

out.push('<li>' + clicks[i].target + outputTime + 'm</li>'); 
     } 
(".taskList ul li p").html(out.join('')); 

을 단순화.

버튼을 클릭하면 Jedit 및 click 이벤트 사이의 시간이 계산되고 편집 된 '클릭하여 편집'텍스트 옆에있는 dom에 값이 배치됩니다.이 전체 Div가 새 섹션으로 이동되기 전에 타이머가 재설정되고 원래 Jeditable 인스턴스가 만들어집니다.

내 어려움은 다른 스택 오버플로 게시물 http://jsfiddle.net/wwnyY/11/에서 발견 한 jsfiddle에서 내 코드의 타이머 부분을 많이 차지한다는 것입니다. 이 결과는 내 결과의 앞쪽에 # 문자를 배치합니다.

나는 타이머 코드가 push() 메서드를 사용하고 있으며 이것이 배열을 반환한다는 것을 알아 냈다. 그리고 이것이 나의 여분의 문자가 어디서 왔는지를 알 수있다. 배열은 프로그래밍에 관한 한 현재의 걸림돌입니다. 누군가 내가 배열을 적절히 처리하여 # 코드를 제거 할 수있는 방법을 설명 할 수 있는지 궁금합니다. 아래 코드에서 그 코드를 바꿀 수 있습니다. jsfiddle의 링크를 때문에 코드 http://binarygeometry.net/test/index.html)

<div class="row"> 
    <div class="eight columns"> 
    <div class="row taskList"> 
     <ul> 
      <li> 
      <div class="nine columns task"> 
      <div class="edit"> 
         ..click to edit 
         </div> 
      </div> 
       <div class="three columns time"> 
        <p>00.00</p> 
       </div> 
     </li> 
     </ul> 
</div> 
    <ul class="row doneList"> 
    <li> 

    </li> 
</ul>  
</div> 

<div class="four columns"> 
<p><a href="#" class="success button" id="done">Go!</a></p> 
</div> 
</div> 






$(document).ready(function() { 

$(".edit").editable("echo.php", { 
    placeholder : "Click me to edit", 
    loadtype : "POST", 
    callback: function(value, settings) { 
     startTime = new Date().getTime(); 
     console.log(startTime); 
    } 
}); 


$("#done").click(function(e){ 

    function update_output() { 

     var out = [], 
      displayTime; 

     for (var i = 0, len = clicks.length; i < len; i++) { 
      displayTime = (clicks[i].time - startTime); 
      console.log(displayTime); 
      outputTime = displayTime //* 0.00001666666; 
      console.log(outputTime); 
      outputTime = outputTime.toFixed(0); 
      console.log(outputTime); 
      out.push('<li>' + clicks[i].target + outputTime + 'm</li>'); 
     } 
     $(".taskList ul li p").html(out.join('')); 
    } 

    var clicks = []; 

    clicks.push({ time : new Date().getTime(), target : $(this).attr('href') }); 
    update_output(); 


    $(".taskList ul li").appendTo(".doneList") 
    $(".edit").removeClass("edit").unbind("click.editable"); 
    $("<li><div class='nine columns task'><div class='edit'>..click to edit</div><div class='three columns time'><p></p></div></li>") 
     .appendTo(".taskList ul"); 

    $(".edit").editable("echo.php", { 
     placeholder : "Click me to edit", 
     loadtype : "POST", 
     callback: function(value, settings) { 
      startTime = new Date().getTime(); 
      console.log(startTime); 
     } 
    }); 
    e.preventDefault();// 
}); 


}); 

답변

2

수행하면 URL에 #을 추가 원하지을 게시 한? 그런 다음 click 처리기 하단에 return false;을 추가하십시오.

+0

매트 덕분에, 나는 생각하지 않았습니다. 'out.push ('

  • '+ clicks [i] .target + outputTime + 'm
  • ');에 의해 리턴 된 것은'# 98098'이고'일단 코드가 실행되고 난 후 – happilyUnStuck

    +1

    으로 어려움을 겪고있다 내가 가지고 있었는지 몰랐던 file.html # 문제를 해결하십시오. 감사! – happilyUnStuck

    +3

    @happilyUnStuck, 제목을 'SOLVED'로 변경하는 대신 답변을 허용으로 표시하십시오. 이 답의 왼쪽에있는 체크 표시를 클릭하십시오. –

    0

    () 함수를 더 이상 밀어() 메소드를 통해 가변 출력하지만 단순히 outputTime 변수로 삽입

    //out.push('<li>' + clicks[i].target + outputTime + 'm</li>'); 
        } 
    $(".taskList ul li p").html(outputTime); 
    

    되는 HTML로

    out.push('<li>' + clicks[i].target + outputTime + 'm</li>'); 
        } 
    (".taskList ul li p").html(out.join('')); 
    

    을 단순화하여 (대신 e.preventDefault()의 사용) 노드.

    +0

    당신도 이것을 인정 된 것으로 표시 할 수 있습니다. –

    +0

    나는 이틀 동안 기다려야한다. 어쩌면이 시간에 내 해커 픽스보다 더 나은 대답을 얻을 수 있습니다.) – happilyUnStuck