2012-08-26 25 views
15

Einfaches Problem. Ich habe eine js-Variable, die ich auch innerhalb eines jQuery-Selektors verketten möchte. Es funktioniert jedoch nicht. Es tauchen auch keine Fehler auf. Was ist falsch? Wie verknüpfe ich eine Variable korrekt mit einem Text in einem jQuery-Selektor?Verketten in jQuery Selector

<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> 
+3

Sie sollten eine Geige erstellen: http://jsfiddle.net/. – valentinas

+0

@ ason328, kennen Sie die 'console.log()'. Mit seiner Hilfe, indem Sie es in interessante Zeilen einfügen, können Sie Schritt für Schritt sehen, was in Ihrem Code passiert. – user907860

+0

Nein, ich war mir dessen nicht bewusst. Ich werde das jetzt untersuchen. – jason328

Antwort

30

Es ist nichts falsch mit der Syntax von

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

jQuery akzeptiert einen String (in der Regel eines CSS-Selektor) oder ein DOM Node als Parameter ein jQuery Object zu erstellen.

In Ihrem Fall sollten Sie einen String zu übergeben, die $()

ist
$(<a string>) 

Stellen Sie sicher, haben Sie Zugriff auf die Variablen number und text.

Zum Test machen:

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

Wenn Sie sehen, haben Zugriff nicht, sie als Parameter an die Funktion übergeben, müssen Sie die uual Parameter für $ .get umfassen und die benutzerdefinierten Parameter nach ihnen passieren.

+2

Ehrfürchtig. Danke für die klare Erklärung. Meine Var-Nummer wurde undefiniert genannt, was ich schnell behoben habe. – jason328

+0

Gald das ist behoben. Aber jetzt bin ich verwirrt, Wie hast du es repariert? :) – sabithpocker

+1

Noob Fehler. Ich habe die var-Nummer außerhalb des Click-Ereignisses angerufen. – jason328

2

Ihre Verkettungssyntax ist korrekt.

Wahrscheinlich wird die Callback-Funktion nicht einmal aufgerufen. Sie können dies testen, indem Sie eine alert(), console.log() oder debugger Zeile in diese Funktion einfügen.

Wenn es nicht aufgerufen wird, liegt wahrscheinlich ein AJAX-Fehler vor. Schauen Sie sich einen .fail() Handler nach $.post() verketten, um herauszufinden, was der Fehler ist, z.B .:

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

Wie ist der Bereich innerhalb des $ .get Callbacks? Sind die Variablen Nummer und Text dort zugänglich? – sabithpocker

+1

@sabitpocker Wenn Ihr oben angegebener Code vollständig ist, können Sie 'number' und' text' aufrufen, da sie Teil des _exical scope_ sind. Die "Gotcha" Variable in Callbacks ist 'this', aber du verwendest das nicht. – Alnitak

+0

Danke, dass Sie Licht in den lexikalischen Bereich gebracht haben. – sabithpocker