2016-06-06 5 views
-1

MVC 앱이 있고 디스플레이의 일부로 내 페이지 중 하나에서 라디오 버튼 사용자 선택에 따라 두 부분 중 하나를 렌더링합니다. 이 비트는 모두 정상적으로 작동하지만 사용자 선택에 따라 컨트롤러로 전달되는 값을 설정하거나 재설정해야하는 기본 폼에 버튼이 있습니다.Jquery가 예상대로 속성을 업데이트하지 않습니다.

이 페이지 처음 viewtype을 렌더링
@Html.GlobalModalAuthorizeButton("Upload Document", "Upload", "Documents", new { serviceUserId = Model.ServiceUser.Id, folderId = Model.CurrentFolderId, viewType = Model.ViewTypes.ToString() }, new { @class = "icon upload btn-primary" }) 

는 사용자가 처음으로 제시하는 기본보기로 설정됩니다로 버튼은 내 주요 양식에 선언됩니다. 사용자가 뷰를 변경하면 뷰 유형이 업데이트 된 것처럼 보이지 않습니다. 그래서로드 된 부분에서 값을 올바른 값으로 설정하려고합니다. 나는 다음과 같은 경우 크롬 브라우저 개발자 도구를 사용하여 :

$(this).parent().parent().parent().parent().find($('.upload')).attr('data-url').replace('FileView', 'TreeView'); 

는 콘솔 창에 내가 원하는 값을 반환 (아이디어는 사용자가를 누르면 전에 내가 버튼 값을 설정이다). 문제는 위의 사실은 버튼의 data-url 속성을 변경 한 것처럼 보이지 않으므로 컨트롤러에 히트했을 때 'FileView'가 여전히 전달됩니다. 전체 속성에 대한

+2

$ (이) .parent() 부모() 부모() 부모()를 찾을 수 있습니다 ($를 ('업로드 ')). attr ('data-url ','TreeView '); 속성을 'TreeView'로 변경하려면이 방법을 사용하십시오. –

+0

FileView 대신 TreeView 값을 원합니 까? @ 마이크가 빠르다, 그 대답이다! –

+1

Mike는 맞습니다. 그러나 명확하지 않은 경우를 대비하여 : .attr는 요소의 값에 대한 참조를 제공하지 않고 현재 값을 제공합니다. 값을 읽을 필요가 있다고 제안 할 때 곧바로 덮어 쓰지 않는 한 수정 한 다음 다시 쓸 수 있습니다. 제쳐두고, 많은 부모님의 일을하는 더 좋은 방법을 생각해 낼 수 있습니까? 예 : 찾고있는 클래스에 클래스를 추가하고이를 찾는 단일 부모 호출을 수행하십시오. – Rup

답변

2

:

var new_attr = "/ServiceUser/Documents/Upload?serviceUserId=21&viewType=FileView"; 

$(this).parent().parent().parent().parent().find($('.upload')).attr('data-url', new_attr); 

또는 @Rup 이미 제안, 먼저, 원래의 속성 값을 얻을 replace 방법을 사용하는 것은 다음 new_attr를 재 할당 할 것을 수정해야합니다.

2

jQuery를 속성 데이터를 읽고 쓰는 특별한 방법을 가지고 :.....

var uploadButton = $(this).parent().parent().parent().parent().find('.upload'); 
var currentUrl = uploadButton.data('url'); 
uploadButton.data('url', currentUrl.replace('FileView', 'TreeView')); 
+0

'data' 메소드를 사용하여 값을 얻을 수는 없지만 그것을 설정할 수는 없습니까? 다시 한 번) –

+0

@Mike [nope] (https://jsfiddle.net/yahavbr/trakauke/) –

+0

답장을 보내 주셔서 감사합니다. :) –

관련 문제