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

当现有元素只有类而没有ID时,jQuery/Javascript将唯一元素添加到其他元素中,javascript,jquery,class,element,title,Javascript,Jquery,Class,Element,Title,Wordpress主题允许站点管理员创建包含每个字段描述的表单。这些描述没有唯一的ID,只有一个公共类:“description”。它们看起来如下所示: <div class="field-head"><label for="name">Your name</label><small class="description">A unique description for this field.</small></div>

Wordpress主题允许站点管理员创建包含每个字段描述的表单。这些描述没有唯一的ID,只有一个公共类:“description”。它们看起来如下所示:

<div class="field-head"><label for="name">Your name</label><small class="description">A unique description for this field.</small></div>
<span class="tipwrapper">A unique description for this field.</span>
我没有像主题那样在每个字段标签上内联显示这些描述,而是用CSS display隐藏了description类: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隐藏了description字段,并尝试了各种方法,在元素之前或之后使用“description”类添加一个span。预计我最终将遍历这些元素中的每一个,我首先尝试只使用一个字段,第二个字段使用description类。以下是我多次尝试的两个例子及其结果:

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

<div class="field-head"><label for="name">Your name</label><small class="description">A unique description for this field.</small></div>
<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);
        };
 });
结果:这会正确地将工具提示范围呈现在每个元素前面的description类中,但是我尝试设置它的title属性仍然为空,即使向上述函数添加AlertTiptText会确认变量正确地获取了描述文本。生成的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”属性?

这里有一个解决方案,用于将原始的小元素替换为新的span

循环用于迭代所有.field头元素

请参阅代码中的注释

$.field-head.eachfunction{ //获取每个字段头中的小元素并获取其文本 var small=$this.findsmall var description=small.text; //创建一个跨度元素。。。 var span=$.addClasstipwrapper.textHover用于提示; //并设置标题。 span.attr名称、描述; //用新跨距更换小跨距 小的,小的; };
您的名称是此字段的唯一描述。您是否考虑过在脚本中使用初始循环来添加所需的唯一Id..而不是复杂的解决方法?谢谢!我对jQuery不够熟悉,没有考虑过您使用的方法。2备注:1。因为页面上还有其他不属于description类的元素,所以我修改了您的代码以查找.small.description,它似乎可以工作。2.美元符号$未被识别为代表jQuery。我用“jQuery”一词替换了每个实例,这很有效。我会做一些更多的研究,看看是什么原因导致了这个问题,也许会和主题作者们核实一下。再次感谢你。