JQuery each()函数不能正常工作DropDownList更改

时间:2012-01-20 13:46:46

标签: jquery

我从下拉列表中选择了一个表格。如果表中任何项目的状态不是“成功”,我想禁用页面上的按钮,否则我启用它。我有一个带有以下内容的更改事件处理程序:

function enableButton() {
    $(".myButton").attr("disabled", true);
    $("td.tdStatus").each(function() {
        if ($(this).text() == "SUCCESS") {
            $("input.myButton").attr("disabled", false);
            return false;
        }
    });
}

$(function() {
    $("#myList").change(enableButton);
});

在下拉列表的第一个项目选择中,我进入事件处理程序,但$("td.tdStatus").each(function()没有找到任何内容。当我随后对下拉列表进行更改时,按钮会按照我的预期获得enabled / disabled。任何想法为什么第一次改变不起作用?

HTML如下:

<ItemTemplate>
    <tr>
        <td runat="server" id="tdName"><%# Eval("Name") %></td>
        <td class="tdStatus"><%# Eval("Status") %></td>
    </tr>
</ItemTemplate>

由于

4 个答案:

答案 0 :(得分:1)

使用此:

function enableButton() {
    $(".myButton").attr("disabled", true);
    var x = $("td").find(".tdStatus", function() {
        if ($(this).text() == "SUCCESS") {
            $(".myButton").removeAttr("disabled");
            return false;
        }
    });
}

$(function() {
    $("#myList").change(enableButton);
});

我认为应该有效

尝试使用.text()和.val()我不确定哪一个应该工作

答案 1 :(得分:1)

您需要完全删除已禁用的属性。

$(".myButton").removeAttr("disabled"); 

禁用属性的存在,无论该值将导致控件被禁用,即

<强>禁用

<input type="button" disabled="true" />

仍然停用

<input type="button" disabled="false" />

<强>已启用

<input type="button" />

答案 2 :(得分:1)

还有一些建议:

您是否尝试过使用.tdStatus代替td.tdStatus?

如果你的框架为你的条目创建div,你可能需要调用td的孩子吗?

function enableButton() {
    $(".myButton").attr("disabled", true);
    $("td.tdStatus").children().each(function() {
        if ($(this).text() == "SUCCESS") {
            $("input.myButton").attr("disabled", false);
            return false;
        }
    });
}

尝试在每个方法中使用alert()来查看返回的内容

function enableButton() {
    $(".myButton").attr("disabled", true);
    $("td.tdStatus").children().each(function() {
        alert(jQuery(this).text());
    });
}

答案 3 :(得分:0)

只是为了给出更新,加载数据的选项卡有一个绑定到tabsload事件的函数:

$(“#tabContent”)。bind('tabsload',tabLoaded);

在tabLoaded内部我调用了enableButton()函数,这使得它运行正常,在函数触发之前数据已完全加载。感谢大家的帮助,对错过原帖中的关键信息表示歉意!