javascript - 在单个函数中使用 JavaScript 和 jQuery (Nodes & Stuff)

标签 javascript jquery dom

我目前正在学习 jQuery。我知道 jQuery 是 JavaScript 的自定义库。

我正在做一些仅使用 JavaScript 的书中的学习示例,为了进一步提高我的学习经验,我正在尝试将 jQuery 用于任何可能更高效的事情。

所以,我有这段代码:

function addLetter(foo) {
    $(foo).unbind('click');
    var tileLetter = $(foo).attr('class').split(' ');
    var letter = tileLetter[2].charAt(1);
    if (document.getElementById('currentWord').childNodes.length > 0) {
        $('#currentWord p').append(letter);
    } else {
        var p = document.createElement('p');    
        var txt = document.createTextNode(letter);
        p.appendChild(txt);
        $('#currentWord').append(p);        
    }
}

问题 #1:

如果我将 document.getElementById('currentWord').childNodes.length 更改为 $('#currentWord').childNodes.length 它不起作用。我认为 jQuery 选择器与 JS document.getElementById 是一样的,因为它让我返回了 DOM 元素。如果是这样,那么能够在其上使用 .childNodes.length 函数就有意义了;但它不起作用。我想这不是一回事吧?

问题 #2:

代码为教科书代码。我已经添加了其中的所有 jQuery。我的 jQuery 知识有限,有没有更有效的方法来执行该函数?

函数的用途:

这个函数应该创建一个 p 元素并在它第一次运行时用一个文本节点填充它。如果已经创建了 p 元素,它只是将字符附加到其中。

这是一个单词生成游戏,所以您点击一个字母,它就会被添加到“currentWord”div 中。 tile 的字母嵌入在第 3 个 css 类中,因此进行了 attr 拆分。

谢谢!

最佳答案

document.getElementById('currentWord')

返回一个 DOM 对象,而 $('#currentWord') 返回一个包裹在 jQuery 对象中的 DOM 对象。

要获取普通的 DOM 对象,您可以这样做

$('#currentWord').get(0)

所以

$('#currentWord').get(0).childNodes.length

应该可以。

关于javascript - 在单个函数中使用 JavaScript 和 jQuery (Nodes & Stuff),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076965/

相关文章:

javascript - javascript中的字符串比较

javascript - var onload 是否意味着它应该在页面加载时运行

jquery - 有没有更好的方法从表行中获取值?

jquery - <li>移动到顶部或底部时如何产生动画效果

javascript - javascript对象和html dom之间的内存利用率

javascript - 从 URL 路由时加载要存储在 Vue 中的数据不起作用(单击按钮时起作用)

javascript - 如何捕获验证错误的类型?

javascript - 神秘的ajax请求以某种方式发生

javascript - 当按钮没有 id 时,我如何点击它

javascript - 检测 iframe 上的鼠标位置