jQuery - 如果不存在则创建元素 - 更短的方式

Ale*_*lex 14 javascript jquery jquery-selectors

如何判断某个元素是否有另一个元素?如果没有,请添加一个新的,然后返回.

我尝试过:

var myel = ($('> div.my', this).length > 0)
    ? $('> div.my', this)
    : $(this).append('<div class="my"></div>').css('opacity', 0);
Run Code Online (Sandbox Code Playgroud)

但即使它创建我的元素,如果它不存在,它不会返回它...

glo*_*tho 17

这个怎么样?

var myel = $('> div.my', this).length ? $('> div.my', this) : $('<div class="my"></div>').css('opacity', 0).appendTo(this);
Run Code Online (Sandbox Code Playgroud)

  • 更小,更通用的:`var $ myel = $('div #myel').长度?$('div #myel'):$('<div id ="myel">');` (2认同)

Ala*_*tts 5

这就是我将如何做到的:

var myDivs = $('div.container').children('div.my');
if(myDivs.length === 0){
    myDivs = $('<div class="my"></div>   ')
        .appendTo('div.container')
        .css('opacity', 0);     
}
Run Code Online (Sandbox Code Playgroud)

我的推理是你只需要查询一次孩子,所以如果孩子很多,这会节省一些时间。

此外,如果没有孩子,那么你创建一个,appendTo容器,执行 css 然后返回它。