Recentemente, usei Jquery ao trabalhar em um projeto. Os novatos estão aprendendo jquery e encontrei alguns problemas "estranhos" (mestres, por favor, não me culpem).
Obrigado ao Sr. ClassYuan por seu apoio ao blog da ClassYuan http://www.classyuan.com/.
1. Ao carregar um evento com um elemento HTML, o evento será executado ao mesmo tempo que o carregamento.
Código de erro:
ver fonte
PRint?1 $("#btnLoad").bind("click",GetProduct());
código correto
ver fonte
print?1 $("#btnLoad").bind("clique", function() { GetProduct() });
Neste código, ignorei o método Bind. A explicação da API é bind(type,[data],fn)
Considerei erroneamente fn como uma função simples. Como resultado, esse código executará fn uma vez ao carregar.
Este é um descuido no formato escrito. Espero que alguém que conheça o motivo possa me dar alguns conselhos.
2. O problema do escopo variável (parece que este não é um problema de jquery. É a diferença entre js e .net..)
ver fonte
imprimir?1 função texto() {
2 para (var i = 0; i < 3; i++) {
3 $("<a>Excluir</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCSS").bind("clique", função () { tes(i) }).appendTo(".div_list");
4}
5}
6 função tes(id) {
7 alerta(id);
8}
Esta função. Quero alertar o id correspondente. O resultado é que a resposta é muito agradável. É uma função com 3 tags <a>.
Depois de olhar para isso... eu entendo
Em relação ao problema de escopo de variável, o parâmetro passado para a função tes é o valor de i após o término do loop, então todos são 3.
Isso parece ser diferente de .net.
Finalmente, a solução - -.. Basta passar $(this) em
3. Problemas com a ordem de execução dos eventos
ver fonte
imprimir?1 <a target="_blank" title="Iphone" >
2 <img id="proImg7_2" src="" alt="Iphone" style="largura:70px; altura:60px; borda:none;"
3</a>
O evento onclick está vinculado a esta imagem. O conteúdo do evento é adicionar um atributo href ao pai da tag <img>.
Mas depois que o evento for executado, ele irá pular diretamente para o link da tag a. Após análise.
Deve ser que o clique seja executado antes do href, ou seja, quando a imagem é clicada, a tag A já possui o href, e então a tag A é acionada ao mesmo tempo.
Solução.. Remova a tag externa de <img>.. Em seguida, modifique o evento
ver fonte
imprimir?1 idwrap(' <a href=" http://www.QQ.com"></a>' );
Os acima são os problemas que eu, um novato, encontrei ao usar o jquery pela primeira vez. Vou deixá-los aqui e tratá-los como um processo de crescimento.