Javascript 如果搜索为空,jQuery会回退到创建DOM对象吗?

Javascript 如果搜索为空,jQuery会回退到创建DOM对象吗?,javascript,jquery,html,Javascript,Jquery,Html,我刚刚发现了一个导致XSS的奇怪案例,但我真的不明白为什么。相关代码正在搜索具有匹配名称的标记,如下所示: var varName = getCookie('cookiename'); var link = $('.someclass a[name=' + varName + ']'); 如果该cookie碰巧包含XSS,那么执行该jQuery代码将导致XSS被执行。我知道,根据我在文档中读到的内容,类似$(“”)的内容将被添加到DOM中并执行。我不明白为什么上面的代码,使用相同的img标记

我刚刚发现了一个导致XSS的奇怪案例,但我真的不明白为什么。相关代码正在搜索具有匹配名称的标记,如下所示:

var varName = getCookie('cookiename');
var link = $('.someclass a[name=' + varName + ']'); 

如果该cookie碰巧包含XSS,那么执行该jQuery代码将导致XSS被执行。我知道,根据我在文档中读到的内容,类似$(“”)的内容将被添加到DOM中并执行。我不明白为什么上面的代码,使用相同的img标记作为变量值,会有相同的结果。它不应该只导致一个空变量吗?

在较旧版本的jQuery中,以下jQuery选择器将导致创建一个div:

$('.someclass a[name=' + '<div>Hello World!</div>' + ']')
$('.someclass a[name='+'Hello World!'+']))

但是,在较新版本的jQuery中,除非html字符串以
哪个版本的jQuery开头,否则jQuery不会创建dom片段?以前的版本导致上述代码创建元素,而不是返回带有无效输入的空数组。在这种情况下,较新的版本会抛出一个错误。目前使用的jQuery stackoverflow版本实际上就是这样。