2012-09-27 2 views
1

Wordpress에서 위젯 양식 입력 필드를 AJAX로로드하므로 문서 준비에로드되는 대상을 찾을 수 없습니다. 나는 그것을 읽었다. 사건을 재조직하는 방법이다. 그리고 나는 그걸 가지고 놀았지만, 그것을 잊어 버릴 수는 없다. 다음 예제에서 .on을 어떻게 사용합니까? 그리고 그것이 유일한 것이 필요한 것입니까?ajax로로드 된 요소를 대상으로하는 방법 .on

이는 위젯 형태로로드되는 :

<fieldset id="fieldradio"> 
    <legend>pick</legend> 
    <input type="radio" name="radiobutton" value="Yes" /> 
    <input type="radio" name="radiobutton" value="No" /> 
</fieldset> 

<fieldset id="field1" style="display:none;"> 
    <legend>this is field 1</legend> 
    <input type="text" name="fdsa" value="value1" /><br /> 
    <input type="text" name="fdsa" value="value1" /><br /> 
</fieldset> 

<fieldset id="field2" style="display:none;"> 
    <legend>this is field 2</legend> 
    <input type="text" name="asdf" value="value2" /><br /> 
    <input type="text" name="asdf" value="value2" /><br /> 
</fieldset> 

그리고 이것은 내가 사용하고자하는 자바 스크립트입니다 :

jQuery("input[name=radiobutton]").change(function(){   

    if (jQuery(this).val() == "Yes") { 
     jQuery("#field1").fadeIn('slow'); 
    } 
    else { 
     jQuery("#field1").hide(); 
    }  

    if (jQuery(this).val() == "No") { 
     jQuery("#field2").fadeIn('slow'); 
    } 
    else { 
     jQuery("#field2").hide(); 
    }   

답변

2

입니다

jQuery("body").on("change", "input[name=radiobutton]", function(){   
    $(this).parent().hide(); 
}); 

, 이벤트가 요소 또는 문서 객체의 정적 부모 중 하나에서 위임해야합니다, 당신은 on 방법을 사용할 수 있습니다.


http://jsfiddle.net/MaNkE/

$(document).on("change", "input[name=radiobutton]", function(){ 
     var ind = $(this).index('input[type=radio]'); 
     $('fieldset:gt(0)').hide().eq(ind++).show() 
}); 

$(document).on("change", "input[name=radiobutton]", function(){ 
    var ind = $(this).index(); 
    $('#field1, #field2').hide().filter('#field'+ind).show() 
}) 

http://jsfiddle.net/35tpE/

+0

감사! 당신의 코드는 바이올린에서 훌륭하게 작동하지만 워드 프레스에서 시도 할 때 약간 이상합니다. 우선, gt (0)을 gt (1)로 변경해야했습니다. 라디오 버튼이 선택되면 사라집니다. 흠 .. 그걸 해결하는 방법을 모르겠습니다. 라디오 버튼이 사라지지 않기를 바랄뿐입니다. 그것이 연결된 필드 세트. – John

+0

@ 존 오케이, ID로 작동하도록 수정하겠습니다. – undefined

+0

고마워. 그건 잘된거야. 나는 몇 시간 동안 여기에 있었어. 고마워 ... – John

1

이 설명서의 examples을 확인합니다. 이것은 당신이 원하는 구문입니다 동적으로 생성 된 요소에 대한 $("container").on("event", "selector", handler);

+0

안녕하세요, 감사합니다,하지만이 표시/입력 필드를 숨길 작동하지 않습니다. 나는 다른 일을 할 수있다. 예를 들면 변화에 대한 경고를한다. 그러나 # field1 및 # field2를 (를) 타겟팅 할 수 없습니다. – John

+0

@ 존 ID가 "field1"인 등의 여러 요소가 있기 때문일 수 있습니다 (다른 이유는 생각할 수 없습니다). 하지만 부모 요소라면 JQuery의'parent' 셀렉터를 사용할 수도 있습니다. – McGarnagle

관련 문제