2014-02-23 3 views
0

는 쉬운 일이 자신의 코드를 얻었다 :

1.Click 목록 항목 2.get 목록 항목을 수동으로 입력에서 3.put 4.change을 5 값 .klick 당 목록 항목으로 다시 저장하십시오.

여러 목록 항목을 클릭하여 저장하면 이전에 클릭 한 모든 목록 항목에 대한 값이 변경됩니다.

"_this"와 (과) 비슷한 것으로 보이는 것은 모든 연결을 저장하는 것입니다.

어떻게하면 좋을까요? 큰 감사를 드린다!

<ul id="foo"> 
    <li> 
     <a href="#" class="bar"></a> 
     <span class="name">Name1</span> 
    </li> 
    <li> 
     <a href="#" class="bar"></a> 
     <span class="name">Name2</span> 
    </li> 
    <li> 
     <a href="#" class="bar"></a> 
     <span class="name">Name3</span> 
    </li> 
</ul> 

<input id="editName"> 
<a id="save"></a> 


$("#foo").on('click', '.bar', function() {  

    _this = $(this); 
    edit(_this); 
    }); 

function edit(_this) { 

    var name = _this.parent().children(".name").text(); 
    $("#editName").val(name); 

    $("#save").click(function() { 
     _this.parent().find(".name").text( $("#edit input#editName").val() ); 
     }); 

    }; 
+2

당신은 모든 클래스'.name '에 영향을주는 클래스 네임을 찾고 있습니다. –

답변

1

때마다 편집 (_this) 새 대리자를 바인딩하고하자 후 다음 번에 당신이 '#save'이 세 가지 호출을 얻을 것이다을 누르면됩니다 ... 3 번이 방법이라고 말한다 호출 대리자. 당신이 _this 값을 얻을 것이다 변수를 추가하고 저장할 수있는이 문제를 해결하려면 다음

var _thisglobal=''; 

(_this) 편집의 명령을 행한다 기능을 얻을 _thisglobal 대신 _this의 글로벌 값 사용 :

function edit(_this) { 
    _thisglobal=_this; 
    var name = _this.parent().children(".name").text(); 
    $("#editName").val(name); 



    }; 

$("#save").click(function() { 
     _thisglobal.parent().find(".name").text( $("#edit input#editName").val() ); 
     }); 
+0

와우,이 작품 - 고마워요! – Kreativrandale