jQuery - Find dynamically created element without events

岁酱吖の 提交于 2019-12-12 07:27:26

问题


Tho this question has been asked before, and the answer is this:

$('#container').on('click','#dynamicElement', function(){ /* the code */ });

The code above will find the #dynamicElement when its being clicked on. But what if there is no click, nor any other event?

Suppose the following scenario:

$.ajax(
    url:'file.php',
    data: {'param':'value'},
    success: function(response){
         /*
         how would I get #dynamicElement if it was not click on?
         the element had no event fired at all, nor had any of its parennt
         containers.

          Now what?
         */
    }
);

回答1:


If your new element is being added to the page inside the success callback, at that point you can call $('#dynamicElement')

Using $('#dynamicElement') anywhere outside of the callback would not return the element since it had not been added to the DOM yet.




回答2:


How event binding works is as long as that element is in the DOM itself, you can access it by

$('#dynamicElement)

The reason you need event delegation is when you dynamically create the elements after you bound the event. Then, when the event is fired, it looks through all the children of the element you bound it to to find if there are any elements matching your selector.

However, if you know that the element has already been appended to the DOM, you can bind it directly without event delegation, and access it through finding it by ID.

If it hasn't yet, there is no way for you to manipulate it as it doesn't exist yet.



来源:https://stackoverflow.com/questions/33059192/jquery-find-dynamically-created-element-without-events

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!