Concatenate în jQuery Selector (Programare, Jquery, Concatenare)

mulțumesc a intrebat.

O problemă simplă. Am o variabilă js pe care vreau să fie concatenată și în cadrul unui selector jQuery. Cu toate acestea, nu funcționează. Nu apare nici o eroare. Ce este în neregulă? Cum concatenăm corect o variabilă cu un text într-un selector jQuery.

<div id="part2"></div>

<script type="text/javascript" >

$('#button').click(function () 
{
var text = $('#text').val();    
var number = 2;
$.post('ajaxskeleton.php', {
red: text       
}, 
    function(){
    $('#part' + number).html(text);
    }); 
});


</script> 

Comentarii

  • Ar trebui să creați o violență: jsfiddle.net. –  > Por valentinas.
  • @ason328, știi despre console.log(). Cu ajutorul lui, plasându-l în linii interesante, puteți vedea ce se întâmplă în codul dvs. pas cu pas –  > Por Dmitri Koroliov.
  • Nu, nu știam despre el. Mă voi uita acum în acest sens. –  > Por thank_you.
  • @valentinas jsfiddle nu este grozav pentru testarea codului AJAX –  > Por Alnitak.
  • poți să postezi întregul cod? nu funcționează fără div-urile #text și #button chiar acum – de asemenea, id-ul div-ului tău trebuie să înceapă ca part, nu part2 –  > Por zenkaty.
2 răspunsuri
sabithpocker

Nu este nimic în neregulă cu sintaxa de

$('#part' + number).html(text);

jQuery acceptă un șir de caractere (de obicei un selector CSS) sau un DOM Node ca parametru pentru a crea un obiect jQuery.

În cazul dvs. ar trebui să treceți un șir de caractere către $() care este

$(<a string>)

Asigurați-vă că aveți acces la variabilele number și text.

Pentru a testa, faceți:

function(){
    alert(number + ":" + text);//or use console.log(number + ":" + text)
    $('#part' + number).html(text);
}); 

Dacă vedeți că nu aveți acces, treceți-le ca parametrii funcției, trebuie să includeți parametrii uuali pentru $.get și să treceți parametrii personalizați după ei.

Comentarii

  • Minunat. Mulțumesc pentru explicația clară. Numărul meu de var a fost numit undefined, pe care l-am reparat rapid. –  > Por thank_you.
  • Gald că este fixat. Dar acum sunt confuz, Cum ai rezolvat-o? 🙂 –  > Por sabithpocker.
  • Eroare de neștiutor. Am apelat numărul var în afara evenimentului click. –  > Por thank_you.
Alnitak

Sintaxa ta de concatenare este corectă.

Cel mai probabil funcția de callback nici măcar nu este apelată. Poți testa acest lucru punând un alert(), console.log() sau debugger în acea funcție.

Dacă nu este apelată, cel mai probabil există o eroare AJAX. Încercați să înlănțuiți o funcție .fail() handler după $.post() pentru a afla care este eroarea, de exemplu:

$.post('ajaxskeleton.php', {
    red: text       
}, function(){
    $('#part' + number).html(text);
}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(arguments);
});

Comentarii

  • Care este domeniul de aplicare în interiorul apelului $.get? Variabilele număr și text vor fi accesibile acolo? –  > Por sabithpocker.
  • @sabithpocker dacă codul de mai sus este complet, atunci number și text vor fi accesibile pentru că fac parte din domeniul lexical. Variabila „gotcha” în callback-uri este this, dar nu o folosiți. –  > Por Alnitak.
  • Vă mulțumim pentru că ați făcut lumină în domeniul de aplicare lexical. –  > Por sabithpocker.