gpt4 book ai didi

javascript - find() 到底返回什么?

转载 作者:行者123 更新时间:2023-11-28 15:50:50 25 4
gpt4 key购买 nike

我正在使用qunit测试一种方法,我发现了一些我不明白的东西。

该函数正在检查 的所有后代是否都被扫描,我使用一个变量来计算出现的次数。

test ("all body children highlilighted", function(){
var body = $('<body><form><label>This is a label</label><input type="text" /></form><input type="text" /></body>') ;
scan_body(body) ;

var compteur = 0 ;

body.find('*').each(function(idx, val){
var past_color = $(this).css('background-color') ;
var present_color = $(this).mouseenter().css('background-color') ;
notEqual(past_color, present_color, "We expected the color of this element to be changed") ;
compteur++ ;
}) ;
equal(compteur, 5, "5 expected !!!!") ;
}) ;

最终断言始终为假,compteur始终包含2。为什么?

最佳答案

您遇到的行为是因为 jQuery 的 $() ,当用于解析 HTML 字符串时,使用 innerHTML内部(将您的 HTML 放入 <div> )。它在 jQuery documentation 中有解释。 :

When passing in complex HTML, some browsers may not generate a DOM that exactly replicates the HTML source provided. As mentioned, jQuery uses the browser"s .innerHTML property to parse the passed HTML and insert it into the current document. During this process, some browsers filter out certain elements such as <html>, <title>, or <head> elements. As a result, the elements inserted may not be representative of the original string passed

innerHTML删除<body>如果你尝试将其放入 <div> (JSFiddle):

var div = document.createElement('div');
div.innerHTML = '<body><form></form></body>';
// div == <div><form></form></div>

如果不是这样,您会看到 compteur等于 4,根据 @T.J.克劳德answer .

关于javascript - find() 到底返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com