2012-12-11 5 views
1

<ul>의 목록이있는 템플릿이 있습니다. 과 <a id='variable_id'>의 ID가 다른 두 개의 템플릿이 있습니다. 이벤트를이 2 개의 ID (iniciaispalavras)에 바인딩했습니다. 문제는, 예를 들어 iniciais 링크를 클릭하면 <ul>에서 제거하고 id='palavras'으로 새 링크를 만듭니다. 문제는이 새로운 링크가 이벤트가 바인드 된 events 해시에도 불구하고 바인드 된 이벤트가 없다는 것입니다. Backbone하위 요소에서 jQuerylive 또는 on 메서드를 어떻게 수행 할 수 있습니까?새 ID를 가진 HTML 요소를 백본보기에 동적으로 추가하십시오.

var MyView = Backbone.View.extend({ 
    el: '#campos', 
    initialize: function() { 
    }, 

이벤트가 두 가지 종류의 링크에 바인딩되어 있습니다.

events: { 
    'click #palavras': 'mudar_para_consulta_palavras', 
    'click #iniciais': 'mudar_para_consulta_iniciais' 
    }, 

이 방법에서는 목록에서 목록 항목을 제거하고 새 ID로 새 콘텐츠를 삽입합니다.

mudar_para_consulta_palavras: function() { 
    $('#campo_consulta').val(''); 
    $('#campo_consulta').attr('placeholder', 'Digite palavras inteiras'); 
    $("#campo_consulta").attr('tipo', 'chave'); 
    $('#palavras').parent().remove(); 
    $("<li><a id='#iniciais'>Consultar por Iniciais</a></li>").insertBefore('.divider'); 
    }, 

다른 방법과 마찬가지로 id 정의 만 변경됩니다.

mudar_para_consulta_iniciais: function() { 
    $('#campo_consulta').val(''); 
    $('#campo_consulta').attr('placeholder', 'Digite inicio de palavras'); 
    $("#campo_consulta").attr('tipo', 'iniciais'); 
    $('#iniciais').parent().remove(); 
    $("<li><a id='#palavras'>Consultar por palavras</a></li>").insertBefore('.divider'); 
    } 
}); 
return MyView; 
}); 

답변

2

난 당신이 단순히 당신이 DOM에 삽입 마크 업의 작은 오타가 있다고 생각 :

$("<li><a id='#iniciais'>Consultar por Iniciais</a></li>") 

$("<li><a id='#palavras'>Consultar por palavras</a></li>") 

는 id 속성의 # 문자가 없어야합니다.

+0

Omg, 그건 내 바보 같다. 많은 연구를 저에게 보내 주셔서 감사합니다. – MurifoX

관련 문제