2009-07-23 5 views
1
enter 

시나리오 : 표시된 이미지를 업데이트하려면 아약스 호출을하고 싶습니다. 예 : 활성화하려면 클릭하고 다시 클릭하면 비활성화됩니다.아약스 호출 후 Jquery- 요소 값 수정

이제 처음 클릭 할 때 이미지가 올바르게 바뀔 수 있습니다.

그런 다음 img을 다시 클릭하면 변경 사항이 더 이상 반영되지 않습니다.

이유는 온 클릭 상태는 여전히 예 = 나는 여기를 참고?

<a href="#" onclick="update('7','yes')" ><img id=img7 border=0 src="img/active.gif" ></a> 





function update(pk,enable) 
{ 

    $.ajax({ 

    url: "ajaxcall.asp", 

    type: "POST",      


    success: function(output) { 

     var status= output 
     if(status==1){    
      var src = ($('#'+'img'+pk).attr("src") == "img/cross.gif")? "img/tick.gif": "img/cross.gif"; 
      $('#'+'img'+pk).attr("src", src);  

    //REFER HERE 

     } 

    }, 

    complete: function(){ }, 

    data: 'pk='+pk+'&enable='+enable 

    });   
} 

에서 ('7', '아니오')의 onclick = "업데이트에 온 클릭 부분을 다시 작성하는 하이퍼 링크 요소에 액세스하려면 어떻게 여기

답변

1

이렇게하면됩니다. 첫째 :

<a id="a7" href="#"><img border="0" src="img/active.gif"></a> 

$(function() { 
    $("#a7").update("7"); 
}); 

function update(pk) { 
    var img = $("#img" + pk); 
    if (img.attr("src") == "img/cross.gif") { 
    enable = "no"; 
    var src = "img/cross.gif"; 
    } else { 
    enable = "yes"; 
    var src = "img/tick.gif"; 
    } 
    $.ajax({ 
    url: "ajaxcall.asp", 
    type: "POST",      
    success: function(output) { 
     var status = output; 
     if (status == 1) { 
     img.attr("src", src); 
     } 
    }, 
    complete: function(){ }, 
    data: 'pk='+pk+'&enable='+enable 
    });   
} 

당신은 예 또는 아니오를 전달할 필요가 없습니다. 이미지 src에서 파생시킬 수 있습니다.

+0

I (예 : 이런 식으로 생각하지 마라. 감사. –

1

쉬운 방법 아웃 :

이 교체 :

$('#'+'img'+pk).attr("src", src);  
이와 0

:

$('#'+'img'+pk).attr("src", src).parent('a').attr('onClick','update("7","no")'). 

올바른 방법이 자바 스크립트가 unobtrusive해야

. 그렇다면 jQuery의 이벤트 바인딩 시스템을 사용하여 이벤트를 한 번 실행 한 다음 바인드를 해제 할 수 있습니다.

+0

안녕하세요, 저는이 방법이 Firefox가 아닌 IE에서만 작동한다는 것을 알았습니다. 해결 방법은 없습니까? –

+0

쉬운 방법이나 올바른 방법으로 했습니까? –

+0

쉬운 방법. 그것은 FF에서 잘 작동하지만 IE는 첫 번째 클릭 후 응답이 없습니다. attr ('onClick', 'update ("7", "no")') –

관련 문제