0

基本上,我有一个 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它可能是我忽略的非常简单的事情

4

2 回答 2

5

我相信你有一点错误。

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

上面查找匹配s[data-id='" + thisId + "'] 内部 <input>的元素。

尝试将其替换为:

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

另外,正如用户烤所指出的那样,您的if情况不正确。它应该是:

if(OldId.length > 0) {
...
}
于 2013-07-15T11:33:28.303 回答
0

.val.attr执行,但他们无事可做。

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

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

if (OldId)

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

于 2013-07-15T11:35:43.540 回答