Javascript jquery奇怪地解析自定义标记
我在以下方面有问题: 我正在尝试使用jQuery1.6解析自定义标记。它工作正常,除非标签位于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!"); });
标签内。例如:
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标记没有区别。我不确定您在选项组中使用自定义标记究竟想要实现什么,但我认为您不希望渲染它,因此,选择或特定选项上的自定义标记可能会实现您的目标