2013-05-22 2 views
0

ajax 요청 후 html 테이블의 행을 바꿉니다. 요청이 성공하면 현재 행으로 대체되는 부분적인 HTML 조각을 받게됩니다.jquery replaceWith 다음에 CSS/javascript 적용

$는 ("# 아이디"). replaceWith (응답)

는 지금은 체크 박스의 입력 필드를 추가하고 나는이 CSS와 JS 라이브러리 내가 교체 한 후 그래서 Bootstrap Switch

를 사용하여 포주 행은 일반 일반 입력 체크 상자 만 볼 수 있습니다. 그리고 멋진 토글이 아닙니다. 페이지를 새로 고치면 토글이 렌더링됩니다.

누구든지 나를 도울 수 있고이 문제의 문제점을 지적 할 수 있습니까? 행과 부모에서 트리거 ('생성')를 사용하려고했습니다.

위 코드는 replaceWith 만 언급 한 것처럼 테이블을 업데이트하는 데 사용하는 코드입니다.

processRecord = (barCode, random_id) -> 
    postParams = { barCode: barCode, ran_id: random_id } 

    $.ajax 
    url: '/scans' 
    type: 'post' 
    data: postParams 

    success: (response, textStatus, xhr) -> 
     $("#" + random_id).replaceWith(response) 
     $("#scans").trigger('create') 

나는 부트 스트랩 스위치 코드를 파고 들었다. init 메소드는 렌더링 후에 추가 HTML이 입력 체크 박스에 추가되도록합니다. 내가 교체 할 때 이런 일이 일어나지 않습니다. 여기를보세요 : https://github.com/nostalgiaz/bootstrap-switch/blob/master/static/js/bootstrapSwitch.js#L14

감사

+0

요소에 JavaScript 이벤트가 연결되어있는 경우 부모 요소에 대신 위임하거나 'replaceWith'가 완료되면 다시 실행해야합니다. 코드가 없으면 더 이상 당신을 도울 수 없습니다. – Blazemonger

+0

$ ("# table_id_or_class") 할 수 있습니까? trigger ('create'); – vinothini

+0

불행히도 트리거 동작이 작동하지 않습니다. – Niels

답변

0

당신은 요소를 교체 한 후 다시 플러그인 스위치를 초기화해야합니다.

success: (response, textStatus, xhr) -> 
    $("#" + random_id).replaceWith(response) 

     // assuming #scans is the parent of inputs 
     var sc = $("#scans"). 

    if (!sc.hasClass('has-switch')) { // this is to prevent stacking 
    sc['bootstrapSwitch'](); // if has-switch is not found, use switch plugin 
    } 
관련 문제