6

을 전환하는 경우에 jQuery를 모바일이는 내가 만든 방법 만 불 이벤트 flipswitch 수동으로

<select id="flip" data-role="flipswitch"> 
    <option value="animal">Lion</option> 
    <option value="flower">Rose</option> 
</select> 

처럼 flipswitch 나는이 flipswitch

$(document).on('change', '#flip', function(e) { 
    console.log('changed'); 
} 

변경 사항을 청취하지만 난 몰라 플립 스위치의 값을 변경하면 이벤트가 시작되기를 원합니다

$('#flip').val('flower').flipswitch('refresh'); 

플립스 백 ch는 직접적으로 상호 작용하거나 값을 설정하고 flipswitch를 새로 고침하여 변경되었습니다.

this JSFiddle에서 원하지 않는 동작의 예를 만들었습니다.

+4

확인이 http://jsfiddle.net/Palestinian/ZPTPL/ 작동 – Omar

+1

는 신속한 답변에 감사드립니다 – gaggi

답변

5

동적으로 값을 변경할 때마다 을 사용하여 change 이벤트를 첨부하고 다시 연결하기 전에 .off()을 제거해야합니다.

코드를 모두 pagecreate 이벤트로 감싸면 .ready()과 같습니다.

$(document).on("pagecreate", "#main", function() { 

    /* change event handler */ 
    function flipChanged(e) { 
     var id = this.id, 
      value = this.value; 
     console.log(id + " has been changed! " + value); 
    } 

    /* add listener - this will be removed once other buttons are clicked */ 
    $("#flip").on("change", flipChanged); 

    $('#setlion').on('vclick', function (e) { 
     $("#flip") 
      .off("change") /* remove previous listener */ 
      .val('animal') /* update value */ 
      .flipswitch('refresh') /* re-enhance switch */ 
      .on("change", flipChanged); /* add listener again */ 
    }); 

    $('#setrose').on('vclick', function (e) { 
     $("#flip") 
      .off("change") 
      .val('flower') 
      .flipswitch('refresh') 
      .on("change", flipChanged); 
    }); 
}); 

Demo