【发布时间】:2021-07-26 01:00:35
【问题描述】:
根据jQuery API's Documentation,我正在使用正确的事件处理程序。
我也知道所陈述的 IE 问题,我不在乎,因为这只是一个有趣的实验。
注意: 试图更改通过 HTML 创建或已在 HTML 文档中的
input元素的type属性(或属性) 将导致 Internet Explorer 6、7 或 8 引发错误。
所以我一直在努力让它发挥作用,但我有几个问题:
- 这可能吗?
- 如果是这样,我做错了什么?如何解决?
编辑
我的意图是将.selected 的标签从span 更改为用户指定的任何内容。我最初以button 为例,但我看到我的帖子很容易被误解。因为我的意图是将span 标记更改为从button 到input[type=text] 元素的任何内容。一切都取决于用户在文本框中键入的内容。
我不知道replaceWidth 在这种情况下会如何帮助我。我怎样才能对此有更多了解?
$(document).ready(function() {
// Show active tag
$(".activetag").html( $(".selected").prop("tagName").toLowerCase() );
// Change selected element's tag
$(".convert").on("keyup", function() {
$(".selected").replaceWidth( $("div") ).html( $(".selected").html() );
});
// Show selected element's code
// ex. <span class="selected">Hello world</span>
$(".code").val( $(".selected").html() );
});
<!DOCTYPE html>
<html>
<head>
<title>new document</title>
<meta charset='utf-8'>
<meta name='viewport' content='initial-scale=1.0'>
<meta http-equiv='X-UA-Compatible' content='IE=9' />
<link type='text/css' rel='stylesheet' href='http://necolas.github.io/normalize.css/3.0.1/normalize.css'/>
<script type='text/javascript' src='http://code.jquery.com/jquery-latest.min.js'></script>
</head>
<body>
<div align="center">
<span class="activetag">Hello world</span><br />
<input type="text" class="convert"><br />
<span class="selected">Hello world</span><br />
<textarea class="code"></textarea>
</div>
</body>
</html>
【问题讨论】:
-
是什么让您认为您可以更改
.tagName?通常的解决方案是用您想要的类型的新 DOM 元素替换当前标签(及其子标签)。 -
这不是一个骗子 imo,因为它似乎将输入类型属性与标记名混淆了,可能需要
$(".selected").attr("type", "button"); -
@andrew - 因此,由 OP 来澄清他们的问题,而不是我们猜测他们“可能”的实际含义。
-
tagName 属性是只读的,不能更改。正如 jfriend00 所建议的那样,您可以将一个元素替换为另一个元素,并将属性和属性从一个元素复制到另一个元素。但并非所有属性在元素之间都是通用的,例如复选框具有选中属性,文本输入没有。
标签: javascript jquery