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