Yii Framework Forum: Jquery Client Error - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Jquery Client Error Rate Topic: -----

#1 User is offline   marcoaurelio 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 10-December 12

Posted 15 January 2013 - 10:05 PM

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?
0

#2 User is offline   Alessandro Correia 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 18-April 12

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.
0

#3 User is offline   marcoaurelio 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 5
  • Joined: 10-December 12

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.
0

#4 User is offline   Newerton 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 820
  • Joined: 27-April 10
  • Location:Campo Grande/MS - Cambé/PR, Brasil

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/
Newerton Vargas de Araújo
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users