Javascript 如何在变量中修改模板html的值
我有一个Ajax调用,它得到不同的描述和视频的url地址:Javascript 如何在变量中修改模板html的值,javascript,jquery,Javascript,Jquery,我有一个Ajax调用,它得到不同的描述和视频的url地址: function TraerInstructivos() { $.ajax({ type: "GET", url: '<%= Page.ResolveUrl("~/Instructivo/Instructivos.aspx") %>' + '/TraerInstructivos', contentType: "application/json; charset=utf-
function TraerInstructivos() {
$.ajax({
type: "GET",
url: '<%= Page.ResolveUrl("~/Instructivo/Instructivos.aspx") %>' + '/TraerInstructivos',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var res = JSON.parse(response.d);
$.each(res, function (i, item) {
DibujarVideo(item);
});
},
error: function (response) {
alert("Error");
}
});
};
现在,复制模板html的方法如下所示:
function DibujarVideo(video) {
var elemACrear = $("#video-elem").html();
$(elemACrear).find("#video-ref").attr("href", video.DireccionVideo);
console.log(elemACrear);
$("#Videos").append(elemACrear);
}
function DibujarVideo(video) {
var elemACrear = $("#video-elem").html();
var $elem = $(elemACrear);
$elem.find("#video-ref").attr("href", video.DireccionVideo);
$("#Videos").append($elem);
}
我在控制台日志和页面中看到的是href的值没有变化,但如果我将其保存在变量中,我会看到变化,例如:
var elem = $(elemACrear).find("#video-ref").attr("href", video.DireccionVideo);
因此,我认为在页面中更改/操作DOM树与在变量中更改/操作DOM树是不同的
如何更改我的elemACrear变量中的href
我正在学习jQuery,非常感谢您的帮助。您已经诊断并解决了这个问题,但没有遵循逻辑。只需将在
elem
变量中创建的jQuery对象提供给append()
调用,如下所示:
function DibujarVideo(video) {
var elemACrear = $("#video-elem").html();
$(elemACrear).find("#video-ref").attr("href", video.DireccionVideo);
console.log(elemACrear);
$("#Videos").append(elemACrear);
}
function DibujarVideo(video) {
var elemACrear = $("#video-elem").html();
var $elem = $(elemACrear);
$elem.find("#video-ref").attr("href", video.DireccionVideo);
$("#Videos").append($elem);
}
出现这种行为的原因是
.html()
返回一个包含html代码的字符串,而不是实际的DOM对象。将这个字符串传递到$()
中会使jQuery从中构建一个DOM对象,但是如果您没有在变量中获取它,那么您仍然拥有原始字符串(.attr
修改了构建的DOM对象,但没有修改原始字符串)。好的,我看到的是,elem只是a标记。是否有机会抓住模板中的所有内容,只更改其中某个标记的href?你们是对的-我错了。我为你更新了答案啊,太棒了,我明白了,所以我把所有的html放在一个变量中。现在我的最后一个问题是,创建变量时,$代表什么?在本例中,$elem,而不是var elem?。标记为应答。$
只是一种命名约定。它表示该变量包含一个jQuery对象。它没有其他特殊的行为。太棒了,谢谢你,现在知道这两件事会更容易。