Jquery 为什么每次传递div标记都有效,而将变量作为参数传递则偶尔有效?

Jquery 为什么每次传递div标记都有效,而将变量作为参数传递则偶尔有效?,jquery,Jquery,我有一个test.js文件 在test.js的顶部,我声明了以下变量: var requiredDiv = $("<span class='markrequired'>*</span>"); 虽然这在99%的时间内都有效,但会有一些文本框的随机实例,其中图标不会出现 但是,如果我将代码更改为: $("#dvMain :input:not([type=hidden]):not([type=submit]):not([type=button])").closest(".fo

我有一个test.js文件

在test.js的顶部,我声明了以下变量:

var requiredDiv = $("<span class='markrequired'>*</span>");
虽然这在99%的时间内都有效,但会有一些文本框的随机实例,其中图标不会出现

但是,如果我将代码更改为:

$("#dvMain :input:not([type=hidden]):not([type=submit]):not([type=button])").closest(".form-group").prepend($("<span class='markrequired'>*</span>"));
$(“#dvMain:input:not([type=hidden]):not([type=submit]):not([type=button]))。最近(“.form group”)。前置($(“*”);

它似乎无处不在。为什么一个总是工作,而另一个却不工作

因为您每次都附加相同的元素,而不是新的元素。这意味着它将元素从原来的位置移到新位置

如果使用与模板相同的基本元素,则需要制作其副本。使用jQuery的克隆方法很容易做到

...closest(".form-group").prepend(requiredDiv.clone());
显示非克隆与克隆的示例:

var elem1=$(“你好1”);
var elem2=$(“你好2”);
$(“#out1”)。追加(elem1);
$(“#out1”)。追加(elem1);
$(“#out2”).append(elem2.clone());
$(“#out2”).append(elem2.clone())


我已经测试过了,两种方法都能正常工作,一直如此。这个问题必须存在于代码的其他地方。也许是其他的JS或HTML?@CarlMarkham猜想如果第一个方法按照OP的要求工作,你测试错了。
...closest(".form-group").prepend(requiredDiv.clone());