如何判断HTML标签是否含amp4email属性并弹出对应提示
问题描述
有一个隐藏输入框,其value值为包含HTML标签的文本,HTML代码如下:
<input type="hidden" value="<!DOCTYPE html><html amp4email><head></head><body>...Content...</body></html>" id="ampHtml" />
尝试的脚本存在逻辑和解析问题,需求为:当<html>标签存在amp4email属性时弹出“Success”,否则弹出“Fail”,请修正脚本。
原尝试脚本:
var __amp_content = $("#ampHtml").val(); var __attr = jQuery(__amp_content).find('html').attr('amp4email'); if (typeof __attr !== 'undefined' && __attr !== false) { alert('Fail'); } else { alert('Success...'); }
修正后的脚本
var __amp_content = $("#ampHtml").val(); // 创建临时容器解析完整HTML内容,避免根级html标签被自动剥离 var tempContainer = $('<div></div>').html(__amp_content); // 匹配根级或嵌套的html元素 var htmlElement = tempContainer.filter('html').length ? tempContainer.filter('html') : tempContainer.find('html'); var hasAmpAttr = htmlElement.attr('amp4email'); // 符合需求的逻辑判断 if (typeof hasAmpAttr !== 'undefined' && hasAmpAttr !== false) { alert('Success'); } else { alert('Fail'); }
关键修正说明
- HTML解析修复:直接用
jQuery(__amp_content)会自动剥离根级的<html>标签,通过临时<div>容器包裹后,再用filter方法匹配根级元素,确保能正确找到目标<html>标签。 - 逻辑反转修正:原脚本的判断逻辑与需求完全相反,调整后当
amp4email属性存在时弹出“Success”,不存在时弹出“Fail”。
内容的提问来源于stack exchange,提问作者Reddy
相关产品推荐
相关产品推荐

