jQuery 向尚未加载的元素添加文本

jQuery adding text to an element that has not yet loaded

仅供参考,这发生在我的 WordPress 管理区,但它并不是真正特定于 WP 的。

我有一个 link,单击它会创建一个包含几个子元素的新 DOM 元素。我正在尝试向这个新元素添加一个 class 名称,如下所示:

<script type="text/javascript">         
    jQuery(document).ready( function($) {                 
        $('tr#post-65 span.inline a.editinline').click(function() {
            $('tr#edit-65').addClass('someclass');
        });
    }); 
</script>

因此 tr#post-65 始终存在,但 table 行 edit-65 仅在单击 a.editinline 时存在。但是,tr#edit-65 不是由我上面的 jQuery 创建的 ,而是由我无权访问的 WP 自己的 jQuery 代码创建的。

所以,我的问题是,如何将 class 添加到加载我自己的 jQuery 块后创建的元素?是否可以检测元素 edit-65 何时成功 loaded/created 和 只有然后 添加我的自定义 class 到它?

创建一个间隔以定期检查元素是否存在。完成后清除间隔:

<script type="text/javascript">         
    jQuery(document).ready( function($) {                 
        $('tr#post-65 span.inline a.editinline').click(function() {
            var int = setInterval(function(){
                   if($('tr#edit-65').length>0)
                       {$('tr#edit-65').addClass('someclass');
                        clearInterval(int);
                       }
             }, 100);

        });
    }); 
</script>

试试这个:由于您无法控制元素的创建,您可以使用 setInterval 解决并检查元素是否已创建,然后设置 class 并退出。

jQuery(document).ready( function($) {       
        $('tr#post-65 span.inline a.editinline').click(function() {
           var interval = setInterval(function(){ 
               if($('tr#edit-65').length)
                {  
                   $('tr#edit-65').addClass('someclass');
                   clearInterval(interval );
                }
             }, 500);
        });
    }); 

More Information on setInterval()