如何传播.attr()更改?

时间:2017-09-29 03:04:48

标签: javascript jquery html

我有一个html元素列表,它们有一个'data-'属性,指定要查看的下一个元素(这是一个视频列表)。

[data-PosInListVid ='nextListVid'] - >表示此元素是下一个

[data-PosInListVid ='ListVid'] - >表示此元素位于列表中间

[data-PosInListVid ='lastListVid'] - >表示列表在此处停止

当视频进入时,我调用.Ajax()并成功调用一些函数。其中一个功能是从上一个Video中删除属性data-PosInListVid ='nextListVid',并将其插入List的下一个元素中。我是这样做的:

function changeVidList($newVid) {

    //In the List, Videos have positions so...
    var newPosition = $newVid.attr("data-ListVidOrder"); //get the position of the former "nextVideo" 

    var nextPosition = Number(newPosition) + 1; //specify what is the position of the Next video.

    var $videoAfterNewVideo = $("[data-ListVidOrder='" + nextPosition + "']"); //Get the element with next position

    $newVid.attr("data-PosInListVid", "ListVid"); // edit attribute data-PosInListVid from nextListVid to ListVid 

    $videoAfterNewVideo.attr("data-PosInListVid", "nextListVid"); // edit attribute data-PosInListVid from ListVid to nextListVid making it next in line. 

    return false;

};

问题:当它尝试使用:

获取新元素时
var newVidObjDiv = $("[data-PosInListVid='nextListVid']");

newVidObjDiv未定义,尽管指定了元素。

我猜这是传播.attr()更改的问题。 Normaly我使用.on()进行传播,但不知道如何通过.attr()告知DOM有变化,并准备好用jquery选择。

任何人都可以帮助我吗?非常感谢你

编辑:

function onPlayerStateChange(event) {

if (event.data == YT.PlayerState.ENDED) {

    var newVid;
    newVid = $("[data-PosInListVid='nextListVid']").attr("data-nextListVidYTID");

    VidID = newVid;

    var newVidObjDiv = $("[data-PosInListVid='nextListVid']"); //<--- Here is where I call newVidObjDiv

    ajaxGetVid(newVidObjDiv);


    return false;

    }

}

function ajaxGetVid($link) {
$.ajax({
    type: options.type,
    url: options.url,
    data: options.data,
    dataType: "html",
    success: function (data) {
        //console.log(data)

        $(options.target).html(data);

        onYouTubeIframeAPIReady();


        changeVidList($link); // <---- .attr() changing.
    }
});

流程是:

视频开启

视频结束

AJAX CALL

视频开始

更改DOM

视频结束

使用新DOM调用AJAX

视频无法启动

凌晨4点20分,我可能会犯一个愚蠢的错误......

0 个答案:

没有答案