简单的jQuery功能无法正常工作

时间:2013-07-15 11:31:30

标签: jquery ajax

基本上,我有一个Ajax调用,它根据 Ajax 请求返回数据:

var thisId = jQuery(this).data("id");
jQuery.ajax({
    type: "GET",
    url: pluginURL + "/****/templates/files/ajax_controller.php",
    data: "ajaxAction=AddId&id=" + thisId,
    success: function(data) {
        if(data === "success") {            
            var OldId = jQuery("input").find("[data-id='" + thisId + "']");
            if(OldId) {
                alert("Valid OldId!");
                OldId.val("Added!");
                OldId.attr('disabled', 'disabled');
            }
    }
});

正在执行的是alert()正在执行,而不是val()attr它可能是非常简单的我忽略了

2 个答案:

答案 0 :(得分:5)

我相信你有点不对劲。

var OldId = jQuery("input").find("[data-id='" + thisId + "']");

以上内容会在 [data-id='" + thisId + "']内找到与<input> 匹配的元素。

尝试将其替换为:

var OldId = jQuery("input[data-id='" + thisId + "']");

另外,正如用户指出的那样,您的if条件不正确。它应该是:

if(OldId.length > 0) {
...
}

答案 1 :(得分:0)

.val.attr执行,但它们无关。

jQuery("input").find("[data-id='" + thisId + "']")

这不会返回任何内容,即。 jQuery对象将为空。

if (OldId)

jQuery对象仍然评估为true,即使它是空的。检查空虚的一种方法是OldId.length === 0。因此,如果要检查jQuery对象是否匹配,请使用jq.length > 0