javascript - jquery将一个html元素复制到一个字符串
问题描述
如何正确地将 html 元素复制到字符串。我使用 Metroui,第 4 版。它们有一个特殊的输入类,其中一个 X 会通过单击弹出,您可以删除您在输入中输入的值。 https://metroui.org.ua/input.html
当我将 html 元素复制到 var 时,这个 X 什么都不做,但是当我用字符串定义一个 var 并附加它时,它就可以工作了。当我用元素 id 获取它时,已经从 Metro js 注入了 javascript 代码,因为我使用这个 data-role="input",然后 metroui js 做一些事情。如何获得与 var div 相同的字符串?像它在编辑器中显示的纯html?或者这不可能,因为 jquery 只能读取 dom?这样我就可以阅读这个纯 html
<span id="section-one-a1">
<div class="p_scnt" id="p_scnt" name="p_scnt">Test 1</div>
<input value="val1" id="val1" type="text" data-role="input" />
</span>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.metroui.org.ua/v4/css/metro-all.min.css">
<script src="https://cdn.metroui.org.ua/v4/js/metro.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(function(){
$('#addScnt').on('click', function() {
var div = $('<span id="section-one-a1">'+
'<div class="p_scnt" id="p_scnt" name="p_scnt">Test 1</div>'+
'<input value="val1" id="val1" type="text" data-role="input" />'+
'</span>');
//console.log(div);
var newdiv = $('#section-one-a1').prop('outerHTML').replace(/(\r\n|\n|\r|\t)/gm,"");
console.log(newdiv)
var test = $(newdiv);
$(div.appendTo("#p_scents"));
return false;
});
});
</script>
</head>
<body id="main">
<ul id="test">
<li>
<a href="#" id="addScnt">new</a>
</li>
</ul>
<div id="p_scents">
<span id="section-one-a1">
<div class="p_scnt" id="p_scnt" name="p_scnt">Test 1</div>
<input value="val1" id="val1" type="text" data-role="input" />
</span>
</div>
</body>
</html>
解决方案
我是这样做的,不,也许不是很好,但是可以。在输入 data-role 时,删除 MetroUI JS 在 html 中注入的元素和属性,然后它就可以工作了。当它通过 appendto 进入 dom 时,metroui JS 注入了新的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.metroui.org.ua/v4/css/metro-all.min.css">
<script src="https://cdn.metroui.org.ua/v4/js/metro.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(function(){
$('#addScnt').on('click', function() {
var div1 = $('<span id="section-one-a1">'+
'<div class="p_scnt" id="p_scnt" name="p_scnt">Test 1</div>'+
'<input value="val1" id="val1" type="text" data-role="input" />'+
'</span>');
//console.log(div);
var newdiv = $('#section-one-a1').clone().html().replace(/(\r\n|\n|\r|\t)/gm,""); // string
var replace = newdiv.replace('<div class="input">',''); // replace input
replace = replace.replace('data-role-input="true"',''); // replace data-role-input
replace = '<span id="section-one-a1">'+replace+'</span>';
var div = $(replace); // to object
div.find(".button-group").remove(); // remove button-group
//console.log(test)
$(div.appendTo("#p_scents"));
return false;
});
});
</script>
</head>
<body id="main">
<ul id="test">
<li>
<a href="#" id="addScnt">new</a>
</li>
</ul>
<div id="p_scents">
<span id="section-one-a1">
<div class="p_scnt" id="p_scnt" name="p_scnt">Test 1</div>
<input value="val1" id="val1" type="text" data-role="input" />
</span>
</div>
</body>
</html>
推荐阅读
- mallet - 潜在狄利克雷分配和使用 MALLET 分析两个数据集
- intellij-idea - 在 IntelliJ WebStorm 中添加编辑器样式
- javascript - 按文本输入过滤,如何添加正则表达式?-香草JS
- node.js - 在nodejs中的Firebase Functions HTTPS请求中报告错误的正确方法
- firebase - 如何在 Firestore 中为 Flutter 应用查询最近的地理点?
- ios - iOS 14 应用程序开发:如何避免应用程序删除警报出现空字符串(删除/移动到应用程序库的警报)?
- json - 颤振 | 为什么我的 json 文件在我尝试访问它时会转换为 firebase 上的文件夹?
- android - Android.Clean Arch。将数据从域发送到数据层
- python - 如何在 Tkinter 中访问超出窗口大小的条目
- javascript - 在 Javascript 中运行 PHP