2009-06-05 14 views
0

Ich habe eine jquery Frage über die Auswahl von Id.JQuery wählen Id Frage

Grundsätzlich rufe ich eine JavaScript-Funktion aus einer OnClick-Funktion, die ich in Steuerelement Id und LabelId übergeben.

Wenn ich document.getElementById verwende, wird es funktionieren, aber wenn ich jQuery-Selektor verwenden, funktioniert es nicht.

<script type="text/javascript"> 
    jQuery.noConflict(); 
    function ToggleProgressEnable(valueofRadio, controlId, labelId) { 

//Comments: the following will work. 
//  var control = document.getElementById(controlId); 
//  var label = document.getElementById(labelId); 

//The following is not working. 
     var control = jQuery("'#" + controlId + "'"); 
     var label = jQuery("'#" + labelId + "'"); 
     if (control != null && label!=null) { 
      //alert(control.Id); 
      //alert(control.disabled); 
      if (valueofRadio == "yes") { 
       control.disabled = false;     
       label.disabled = false; 
      } 
      else if (valueofRadio == "no") { 
      control.disabled = true; 
      control.value = ""; 
      label.disabled = true; 
      } 
      //alert(control.disabled); 
     } 
    }  
</script> 

Antwort

6
var control = jQuery("'#" + controlId + "'");   
var label = jQuery("'#" + labelId + "'"); 

Sie tun falsch Ihre Selektoren. loszuwerden Ihre Apostrophe und nur benutzen, um Ihre doppelten Anführungszeichen:

var control = $("#" + controlId);   
var label = $("#" + labelId); 
+0

+1 - Vielleicht zeigen Sie die richtige Verwendung anstatt die falsche zu zitieren? –

+0

definitiv. Es sieht so aus, als würde er den Quellcode anstelle des benötigten Wertes verfassen. – Javier

+0

ja Entschuldigung, aktualisiert, um korrekte Verwendung zu reflektieren :) – Jason

1

Sie erhalten ein jQuery-Objekt, keine DOM-Element.

control.val() 

zum Beispiel den Wert zu erhalten ...

Oh, und ich zweite Jasons Antwort: Sie sollten verwenden

jQuery('#' + controlId); 

sollte gut tun ...

+0

Downvote, kein Kommentar? Was ist los? – Ropstah

+0

Ich habe Sie nicht abgelehnt, aber Sie haben eine. wo sollte ein sein + – Jason

+0

War dir nicht die Schuld, nur der anonyme Wähler ... Sorry für die. zu viel php heute :) – Ropstah

0
var control = jQuery("#" + controlId); 
0

Ich würde vorschlagen, die controlId und labelId als Selektoren oder Elemente und nicht als Zeichenfolgen übergeben. Nutzen Sie den Vorteil, dass Sie Objekte als Argumente übergeben können.

var control = $('#myControl'); 
var label = $('#myLabel'); 

ToggleProgressEnable(5, control, label); 
1

Vielleicht:

var control = jQuery("#" + controlId); 
var label = jQuery("#" + labelId); 
+0

var label wird nicht funktionieren, weil Sie noch ein einziges Zitat haben ... – Jason

+0

wird es funktionieren, jetzt :) – sasa

2

Versuchen

jQuery('#' + controlId); 

Andernfalls Sie der Suche nach '#controlId', die keine gültige Selektor ist.