Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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奇怪地解析自定义标记_Javascript_Jquery_Parsing_Custom Tags - Fatal编程技术网

Javascript jquery奇怪地解析自定义标记

Javascript jquery奇怪地解析自定义标记,javascript,jquery,parsing,custom-tags,Javascript,Jquery,Parsing,Custom Tags,我在以下方面有问题: 我正在尝试使用jQuery1.6解析自定义标记。它工作正常,除非标签位于标签内。例如: var string = '<div><blah></blah><select><blah></blah></select></div>'; $(string).find('blah').each(function() { console.log("Found tag!"); });

我在以下方面有问题:

我正在尝试使用jQuery1.6解析自定义标记。它工作正常,除非标签位于
标签内。例如:

var string = '<div><blah></blah><select><blah></blah></select></div>';

$(string).find('blah').each(function() {
    console.log("Found tag!");
});
var字符串=“”;
$(字符串).find('blah').each(函数(){
log(“找到标签!”);
});

这将只记录一条消息,尽管存在两个
标记。无法识别
中的第二个
标记。有人知道为什么会发生这种情况吗?

问题在于,解析的不是JavaScript或jQuery,而是浏览器。虽然您可以认为<代码> <代码>标签是您自己的自定义处理,但浏览器不同意,并期望它只包含代码> <代码>或<代码> <代码>标签。< /P>
当您通过jQuery这样包装字符串时,内部发生的情况是jQuery将字符串作为临时元素的“innerHTML”传递给浏览器。浏览器希望它能处理HTML,所以当它看到非法标记时,它基本上会按照自己的意愿处理它。也许有些浏览器会将
标记单独留下,但其他浏览器不会。

问题在于解析的不是JavaScript或jQuery,而是浏览器。虽然您可以认为<代码> <代码>标签是您自己的自定义处理,但浏览器不同意,并期望它只包含代码> <代码>或<代码> <代码>标签。< /P>
当您通过jQuery这样包装字符串时,内部发生的情况是jQuery将字符串作为临时元素的“innerHTML”传递给浏览器。浏览器希望它能处理HTML,所以当它看到非法标记时,它基本上会按照自己的意愿处理它。可能有些浏览器会保留
标记,但其他浏览器不会。作为使用无效HTML的替代方法,请使用自定义属性标记标记或存储数据,例如

<div><span blah></span><select blah></select></div>
您还可以使用HTML5样式的属性,如
data something=“my data”
,并使用
$.data
直接获取值


由于非标准标记的内容可能无论如何都会被呈现,因此这样做与使用带有自定义属性的span标记没有区别。我不确定您在选项组中使用自定义标记究竟想要实现什么,但我认为您不希望呈现它,因此,选择或特定选项上的自定义标记可能会实现您的目标。

作为使用无效HTML的替代方法,请使用自定义属性来标记标记或存储数据,例如

<div><span blah></span><select blah></select></div>
您还可以使用HTML5样式的属性,如
data something=“my data”
,并使用
$.data
直接获取值

由于非标准标记的内容可能无论如何都会被呈现,因此这样做与使用带有自定义属性的span标记没有区别。我不确定您在选项组中使用自定义标记究竟想要实现什么,但我认为您不希望渲染它,因此,选择或特定选项上的自定义标记可能会实现您的目标