问题
我正在尝试更改元素的内部 HTML 值。我并没有真正使用 jQuery,而且在其功能的许多方面我仍然是新手。
$('a.toggle-download').live('click', function (event) {
$.post("/ajax/toggle-download", { code: $(this).data("document"), prev_value: $(this).data("val") })
.done(function(data) {
var json = data,
obj = JSON && JSON.parse(json) || $.parseJSON(json);
if(obj['return'] == 1){
//document.getElementById("p_" + obj['code']).innerHTML = 'some text';
$("#p_" + obj['code']).html('some text');
}
});
event.preventDefault();
});
我已经尝试了两条线,首先是 jQuery 一条到$("#p_" + obj['code'])
,它没有工作,然后通过document.getElementById("p_" + obj['code'])
它完美地工作。
似乎我在这里遗漏了一些明显的东西,但我仍然不明白为什么 jquery 在这种情况下不起作用!
问题
为什么普通的旧javascript可以正常工作,而jQuery却不能?
附加信息
1) jQuery 本身可以工作并且已正确加载。不存在冲突:成功发送 ajax 调用并正确接收到答案,
2)收到的ID存在且唯一
3)我不热衷于jQuery html() 方法,但我遵循了文档,它应该可以像我使用它一样工作
系统信息
使用 Chrome 27.0.1453.116 m 时会出现此问题。我没有用其他版本或其他浏览器测试它,但我很确定这是一个 jQuery 问题而不是浏览器问题。另外,我在 apache 上使用 php 5.3,但是这些信息应该与问题无关。
如果我错过了一些您需要更好地理解我的问题的信息,请在评论中告诉我,我会尽快回复您。另外,请原谅我糟糕的语法,但我不是以英语为母语的人。
对评论的回答
根据要求,这是 ajax 响应的示例:
{"return":1,"code":"5.43.321"}
该命令console.log($("#p_" + obj['code']).length)
产生“0”