为什么我不能访问我的jQuery返回对象的任何属性?

时间:2009-02-25 14:55:21

标签: asp.net jquery

我有以下javascript:

$(document).ready(function() {
    $('#<%= DropDownList1.ClientID %>').change(function() {
        $('#<%= TextBox1.ClientID %>').disabled = $('#<%= DropDownList1.ClientID %>').selectedIndex != 1;
    });
});

当我更改下拉列表的索引时,没有任何反应。我试图用以下代码替换代码:

$(document).ready(function() {
    $('#<%= DropDownList1.ClientID %>').change(function() {
        alert($('#<%= DropDownList1.ClientID %>').id);                    
    });
});

这会生成一个“未定义”的警报。如果我删除.id-part,我会收到一个警告,上面写着[object Object],所以我猜它有一些东西。我做错了什么?

2 个答案:

答案 0 :(得分:4)

在jQuery中要实现的一个关键点是$(selector)返回的是jQuery对象,而不是DOM对象。如果要从jQuery对象获取选择框的值,可以使用val()函数,如下所示:

$("#element").val();

如果你想从jQuery对象访问dom元素,那也很容易。您可以使用以下内容:

$("#element")[0]; // equivalent to $("#element").get(0)

这应该可以帮助您解决问题。

答案 1 :(得分:1)

$(document).ready(function()
{
    $('#<%= DropDownList1.ClientID %>').change(function()
    {
        // replace 'your value' with the value of dropdown selectedIndex 1
        if ($('#<%= DropDownList1.ClientID %>').val() == 'your value')
            $('#<%= TextBox1.ClientID %>').removeAttr('disabled');
        else
            $('#<%= TextBox1.ClientID %>').attr('disabled', 'disabled');
    });
});