Pergunta

Eu atualizado recentemente um aplicativo do jQuery 1.2 para 1.3.2 -. E nós encontramos uma regressão muito estranho

Para alguns html aproximadamente assim (simplificado um pouco)

<div id="steps">
  <div class="step">
    <span>step #1</span>
    <div class="removeStep"> X </div>
  </div>
  <div class="step">
    <span>step #2</span>
    <div class="removeStep"> X </div>
  </div>
</div>

Nós anexado anteriormente um evento como assim, por todas as etapas:

$("#steps").find(".removeStep").click(removeStepFunc)

De acordo com 1.2 isso iria encontrar todas as etapas, mesmo aqueles que foram adicionadas dinamicamente. Sob 1,3 isto só nunca encontra o primeiro passo.

Isso também não funciona:

#("#steps .removeStep").click(removeStepFunc)

No entanto, isso faz:

#("#steps).children().find(".removeStep").click(removeStepFunc)

Eu, obviamente, pode contornar o problema, mas faz-me um pouco nervoso que talvez haja outras regressões similares que afetam o aplicativo agora temos atualizado, que só vai se apresentar em alguns casos, quando temos mais de um elemento para jogo.

Também vejo essa outra questão, que eu suspeito que pode ser o mesmo problema?

jQuery bug selector? selector composta vs. simples selector & find ()

Foi útil?

Solução 2

Já agora resolvido esta questão depois de tropeçar em toda esta mensagem:

http://groups.google.com/group/jquery -en / browse_thread / thread / ae61896a809f6cf0

Os problemas foram estavam experimentando foram causados ??por nosso uso de uma versão antiga do plugin jQuery Validator (v1.3) que era incompatível com jQuery 1.3.2. O problema foi resolvido agora que nós atualizado para v1.6.

Outras dicas

Tente o seguinte:

jQuery('#steps > .removeStep').click(removeStepFunc)

ou

jQuery('#steps .step .removeStep').click(removeStepFunc)
passo 1 X passo 2 X

Atualizar

O que sobre algo assim? (Não testado):

jQuery('#steps .removeStep').click( function() {
  jQuery(this).remove(jQuery(this).parent());
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top