【问题标题】:JQuery select Id questionjQuery 选择 Id 问题
【发布时间】:2009-06-05 19:31:23
【问题描述】:

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

基本上,我从传入控件 ID 和 LabelId 的 onClick 函数调用 javascript 函数。

如果我使用 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>

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    var control = jQuery("'#" + controlId + "'");        
    var label = jQuery("'#" + labelId + "'");
    

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

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

    【讨论】:

    • +1 - 也许显示正确的用法而不是引用错误的用法?
    • 肯定的。看起来他正在编写源代码而不是所需的值。
    • 使用jquery select id时,是返回数组还是单个元素?
    • 从技术上讲,它返回一个数组,但如果数组中只有一个元素(例如,如果您使用最佳实践并且每页有一个唯一元素),那么它将返回该单个元素。如果你做类似 $("a") 的事情,它会得到你所有的 标签。
    【解决方案2】:

    试试

    jQuery('#' + controlId);
    

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

    【讨论】:

      【解决方案3】:

      也许是这样的:

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

      【讨论】:

        【解决方案4】:

        您收到的是 jQuery 对象,而不是 DOM 元素。你应该使用:

        control.val()
        

        例如获取值...

        哦,我第二个 Jasons 的回答:

        jQuery('#' + controlId);
        

        应该没问题...

        【讨论】:

        • 我没有对你投反对票,但你有一个 .应该有一个 +
        • 不是在责怪你,只是匿名选民......对不起。今天php太多了:)
        【解决方案5】:
            var control = jQuery("#" + controlId);
        

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 2018-02-03
            • 1970-01-01
            • 2013-02-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多