gpt4 book ai didi

javascript - 当现有元素只有类、没有 ID 时,jQuery/Javascript 将唯一元素添加到其他元素

转载 作者:行者123 更新时间:2023-12-02 23:40:58 25 4
gpt4 key购买 nike

Wordpress 主题允许站点管理员创建包含每个字段“描述”的表单。描述没有唯一的 ID,只有一个公共(public)类:“描述”。它们看起来像这样:

<div class="field-head"><label for="name">Your name</label><small class="description">A unique description for this field.</small></div>

我没有像主题那样在每个字段标签处内嵌显示这些描述,而是使用 CSS (display:none;) 隐藏描述类,并尝试创建一个将描述作为其“title”属性的跨度,以便jQuery 会将其显示为悬停时的工具提示。

这就是我想要的:

<div class="field-head"><label for="name">Your name</label><span class="tipwrapper" title='A unique description for this field.'>Hover for a tip</span><small class="description">A unique description for this field.</small></div>

我已经成功地使用 CSS 隐藏了描述字段,并尝试了各种方法在具有“描述”类的元素之前或之后添加跨度。预计我最终将迭代这些元素中的每一个,因此我首先尝试仅使用一个字段(第二个字段包含描述类)来取得成功。以下是我所做的多次尝试及其结果的两个示例:

示例尝试#1:

  jQuery(document).ready(function($){
if (jQuery(('.field-head')[1]) ){
var tiptext = $('.field-head .description')[1].innerHTML;
var txt1 = '<span class="tipwrapper">'+tiptext+'</span>';
$('.field-head .description')[1].before(txt1);
};
});

结果:这会将 HTML 放在正确的位置,但它不会呈现,仅显示为内联文本,如下所示:

<span class="tipwrapper">A unique description for this field.</span>

示例尝试#2:

(我尝试首先创建工具提示跨度,然后设置它们的标题):

jQuery(document).ready(function($){
var txt1 = "<span class='tipwrapper' title=''>Hover for a tip</span>";
$('.field-head .description').before(txt1);
});
jQuery(document).ready(function($){
if (jQuery(('.field-head')[1]) ){
var classLength = $('.field-head .description').length;
var tiptext = $('.field-head .description')[1].innerHTML;
$(('.field-head .tipwrapper')[1]).attr('title', tiptext);
};
});

结果:这会正确地在具有描述类的每个元素之前呈现工具提示跨度,但我尝试设置它的标题属性仍然为空(即使将alert(tiptext)添加到上面的函数确认变量正确获取描述文本。生成的 HTML 如下所示。

<div class="field-head"><label for="name">Your name</label><span class="tooltip" title=''>Hover for a tip</span><small class="description">A unique description for this field.</small></div>

如何将元素中的 html 设置为其之前的新元素的“title”属性?

最佳答案

这是一个使用 .replaceWith() 的解决方案用新的 span 替换原来的 small 元素。

.each()循环用于迭代所有 .field-head 元素。

查看代码中的注释。

$(".field-head").each(function() {

// Get the small element in each field-head and get its text
var small = $(this).find("small")
var description = small.text();

// create a span element...
var span = $("<span>").addClass("tipwrapper").text("Hover for a tip");
// And set the title.
span.attr("title", description);

// Replace the small with the new span
small.replaceWith(span);

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="field-head"><label for="name">Your name</label><small class="description">A unique description for this field.</small></div>

关于javascript - 当现有元素只有类、没有 ID 时,jQuery/Javascript 将唯一元素添加到其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56085683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com