JQuery选择Id问题

时间:2009-06-05 19:31:23

标签: javascript jquery

我有一个关于选择Id的问题。

基本上,我从onClick函数调用javascript函数,我在控件ID和LabelId中传递。

如果我使用document.getElementById,它会起作用,但是,如果我使用jQuery选择器,它就不起作用。

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

6 个答案:

答案 0 :(得分:6)

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

你做错了选择者。摆脱你的单引号,只使用你的双引号:

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

答案 1 :(得分:2)

尝试

jQuery('#' + controlId);

否则,您正在搜索'#controlId',它不是有效的选择器。

答案 2 :(得分:1)

您正在接收jQuery对象,而不是DOM元素。你应该使用:

control.val()

例如获取值...

哦,我的第二个Jasons回答:

jQuery('#' + controlId);

应该做得很好......

答案 3 :(得分:1)

也许这个:

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我建议将controlId和labelId作为选择器或元素而不是字符串传递。充分利用您可以将对象作为参数传递的事实。

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

ToggleProgressEnable(5, control, label);