Estou tentando fazer um append() com jquery na view da seguinte forma:
Yii::app()->clientScript->registerScript('parcelasJS', "
$('#btnAdd').click(function(){
$('ul').append('<li><input type="text" /><a href="#">Excluir</a></li>');
return false;
});
$('.btnExcluir').click(function(){
$(this).parent().hide();
return false;
});
",CClientScript::POS_READY);
<a id="btnAdd" href="#">Add Linha</a>
<ul>
<li><input type="text" /><a class="btnExcluir" href="#">Excluir</a></li>
</ul>
Até aí ta tudo bem. Quando eu clico em 'Add Linha' sempre funciona, porem, todas as linhas que são inseridas passam a nao interpretar mais meu codigo js. Por exemplo, depois eu eu cliquei em 'Add Linha', resultaria o seguinte:
<ul>
<li><input type="text" /><a class="btnExcluir" href="#">Excluir</a></li><!--linha 1-->
<li><input type="text" /><a class="btnExcluir" href="#">Excluir</a></li><!--linha 2-->
</ul>
O que acontece é que se eu clicar no 'Excluir' da linha 2 nd acontece. E se eu clicar no 'Excluir' da linha 1 funciona normalmente e da um hide() na primeira linha. Exatamente isso, o botao de excluir só funciona na primeira <li>, nas demais que são inseridas pelo append() nao funciona.
O que acontece? Pq o script para de funcionar?
É como se o append() colocasse a minha <li>[..]<li> em formato de texto, e nao de HTML. E com isso o javascript nao interpreta aquela linha.
Alguma luz?
Page 1 of 1
Jquery Client Error
#2
Posted 16 January 2013 - 01:47 AM
Tenta através da variável this pegar o elemento subjacente do a.
E:nth-child(n): em um elemento E, pega o elemento n de seu pai.
E:nth-child(n): em um elemento E, pega o elemento n de seu pai.
#3
Posted 16 January 2013 - 09:11 AM
Eu descobri o seguinte: que usando dessa forma não funciona -> $('#btnAdd').click(function(){ , mas quando troquei para isso -> jQuery('#btnAdd').live('click',function() { funcionou perfeitamente.
Muito estranho, mas enfim... resolvi o problema.
Muito estranho, mas enfim... resolvi o problema.
#4
Posted 16 January 2013 - 09:55 AM
Marco,
Normalmente o click() funciona com elementos já renderizado, por isso não funcionava.
Já o live() ele pega os elementos renderizado e criado, uso sempre o live() na CGridView, quando a páginação é dinâmica (ajax).
Doc.: http://api.jquery.com/live/
Você pode usar o on() também.
Doc.: http://api.jquery.com/on/
Normalmente o click() funciona com elementos já renderizado, por isso não funcionava.
Já o live() ele pega os elementos renderizado e criado, uso sempre o live() na CGridView, quando a páginação é dinâmica (ajax).
Doc.: http://api.jquery.com/live/
Você pode usar o on() também.
Doc.: http://api.jquery.com/on/
Newerton Vargas de Araújo
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de
(Vote Up)
--
http://newerton.com.br/
https://linkedin.com/in/newerton
https://github.com/newerton/
--
Por favor, para saber que você ficou satisfeito com a resposta, clicar no botão de

Share this topic:
Page 1 of 1