Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery-选择器$(<;div>;)和$(<;div/>;)差异_Javascript_Jquery_Append - Fatal编程技术网

Javascript Jquery-选择器$(<;div>;)和$(<;div/>;)差异

Javascript Jquery-选择器$(<;div>;)和$(<;div/>;)差异,javascript,jquery,append,Javascript,Jquery,Append,将附加到元素与 $('#my_parent_element').append('<div>');​ $('my#u parent_element')。追加('';​ 或 $('my#u parent_element')。追加($('');​ 及 $('my#u parent_element')。追加('';​ 或 $('my#u parent_element')。追加($('');​ 此斜杠的用途是什么 使用$将此元素转换为jQuery元素的目的是什么 为什么jQuery能

将附加到元素与

$('#my_parent_element').append('<div>');​
$('my#u parent_element')。追加('';​

$('my#u parent_element')。追加($('');​

$('my#u parent_element')。追加('';​

$('my#u parent_element')。追加($('');​
此斜杠的用途是什么

使用
$
将此元素转换为jQuery元素的目的是什么


为什么jQuery能够以这种方式附加元素?

一个是完整有效的代码,保证现在和将来在所有浏览器中都能工作,另一个是不完整的,在某些边缘情况下可能无法工作

为了清楚起见,您需要
'

jQuery只能创建/操作元素,不能打开和关闭标记。一旦在DOM中进行处理,元素就不再由开始和结束标记表示,而是在树结构中表示为节点

.append(“”
.append($(“”))
而言,两者之间几乎没有区别。两者执行相同的操作

api中详细记录了
vs


vs
是一个非常简单的例子,无论是现在还是将来,“应该”都可以在所有浏览器中使用,但是如果您变得更复杂,您就会遇到跨浏览器html解析方式差异的问题。

我认为这4个选项之间没有太大区别。jQuery在处理发送的参数时非常灵活

当只有一个标签时,它们之间没有区别

但是,您应该了解以下两者之间的区别:

<div><span class="inner"> and <div/><span class="inner"/>
第一个生成:

<div><span class="inner"></span></div>

第二个:

<div></div><span class="inner"></span>

是一样的:

构造函数方法中的From

// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,


jQuery.fn = jQuery.prototype = {
    constructor: jQuery,
    init: function( selector, context, rootjQuery ) {
    //cut
            if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
            // Assume that strings that start and end with <> are HTML and skip the regex check
            match = [ null, selector, null ];

            }
    //cut
            // scripts is true for back-compat
            selector = jQuery.parseHTML( match[1], doc, true );
            if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
                    this.attr.call( selector, context, true );
            }
    // cut
    }
    //CUT
    parseHTML: function( data, context, scripts ) {
        // Single tag
        if ( (parsed = rsingleTag.exec( data )) ) {
            return [ context.createElement( parsed[1] ) ];
        }
    }
//匹配独立标记
rsingleTag=/^(?:|)$/,,
jQuery.fn=jQuery.prototype={
构造函数:jQuery,
init:函数(选择器、上下文、rootjQuery){
//削减
if(selector.charAt(0)==“”&&selector.length>=3){
//假设以开头和结尾的字符串是HTML,并跳过正则表达式检查
匹配=[null,选择器,null];
}
//削减
//脚本对于后端兼容是正确的
选择器=jQuery.parseHTML(匹配[1],doc,true);
if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){
this.attr.call(选择器、上下文、true);
}
//削减
}
//削减
parseHTML:函数(数据、上下文、脚本){
//单标签
if((已解析=rsingleTag.exec(数据))){
返回[context.createElement(已解析[1]);
}
}
正如您可以看到的那样,
rsingeltag
regexp同时匹配
,并且第一个控件只检查字符串长度>=3的开始
和结束代码>字符


parseHTML方法再次执行regexp,因此选择器是标记的名称。

我不是说你错了,但是为了完整起见,
[需要引用]
。可能是从这里开始的……在“vs”的特殊情况下但是没有区别,例如,
'
可能会导致在不同的浏览器中生成不同的节点。
代码如何有效?哪个HTML doctype会认为这是有效的?@user1689607我使用的是valid,它的有效性在于,无论它在HTML字符串中的哪个位置,每个浏览器都会对它进行相同的处理(在合理范围内)@user1689607:如果您不是在向jQuery传递字符串时询问字符串,而是在标记有效性方面,那么所有类型的HTML都将其视为有效的..可能重复的+1,因为您是对的,它是相同的。尽管文档比源代码更具权威性。文档显示这两种形式被认为是平等的。我在你的评论之前编辑过:-)你是对的,我实际上有点不同意你的编辑。文档允许
两种形式。一种形式并不比另一种更有效。“当参数有一个标记(带有可选的结束标记或快速结束标记)-
$('')或
$('')
$('')
$('')
-jQuery创建元素…”mmmh我不确定…当参数有单个标记(带可选关闭标记或快速关闭)-$('')或$(''),$('')或$('')
时(带可选关闭).Yep,这就是我的意思。它们明确地允许两种形式。关键是jQuery在创建单个元素时可以识别3种语法类型。因此,这实际上不是HTML有效性的问题,而是jQuery API的要求。
<div><span class="inner"></span></div>
<div></div><span class="inner"></span>
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,


jQuery.fn = jQuery.prototype = {
    constructor: jQuery,
    init: function( selector, context, rootjQuery ) {
    //cut
            if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
            // Assume that strings that start and end with <> are HTML and skip the regex check
            match = [ null, selector, null ];

            }
    //cut
            // scripts is true for back-compat
            selector = jQuery.parseHTML( match[1], doc, true );
            if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
                    this.attr.call( selector, context, true );
            }
    // cut
    }
    //CUT
    parseHTML: function( data, context, scripts ) {
        // Single tag
        if ( (parsed = rsingleTag.exec( data )) ) {
            return [ context.createElement( parsed[1] ) ];
        }
    }