Javascript 如何在变量中修改模板html的值

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-

我有一个Ajax调用,它得到不同的描述和视频的url地址:

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对象。它没有其他特殊的行为。太棒了,谢谢你,现在知道这两件事会更容易。