【问题标题】:Create a div before another在另一个之前创建一个 div
【发布时间】:2013-02-19 10:11:09
【问题描述】:

我有一个来自 JQuery 验证引擎的脚本。我想在另一个 div 之前设置提示 div。

if($('#'+methods._getClassName(field.attr("id"))+'_msddHolder').length ){
var prompt = $('<div>');
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);
prompt.addClass(methods._getClassName(field.attr("id")) + "formError");
// add a class name to identify the parent form of the prompt
prompt.addClass("parentForm"+methods._getClassName(field.closest('form, .validationEngineContainer').attr("id")));
prompt.addClass("formError");

如果我这样做,它将无法正常工作,如果我手动设置:

$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before('<div>TEST</div>');

然后就可以了。为什么?

【问题讨论】:

  • 究竟什么“行不通”?如果您没有具体说明您的问题,我们必须猜测,这对您有任何帮助的机会较小。
  • 您能做的最好的事情就是创建一个jsfiddle.net 演示来重现您的问题。

标签: jquery dom jquery-validation-engine


【解决方案1】:

您在 before 方法之后应用类。该类将不适用于您的元素。你试过了吗:

var prompt = $('<div><h4>I am a test</h4></div>');
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);

只是看看你是否插入了一个元素?

【讨论】:

  • 为什么prompt.addClass 不起作用?一个元素是否在树中并不重要。
【解决方案2】:

提示不是指向您使用 before() 附加的 DOM 元素的指针,它只是一个包含空 div 的变量,您需要在将其附加到文档之前应用它的类。

var prompt = $('<div>');
prompt.addClass("formError");
$('#'+methods._getClassName(field.attr("id"))+'_msddHolder').before(prompt);

【讨论】:

  • 你认为 jQuery 在插入 DOM 元素时会做什么?为什么prompt 不再指向插入的元素?
  • 你对这个问题很感兴趣,不是吗,也许试着回答一下?为了回答您的问题,jQuery 正在将一个类添加到存储在提示 var 中的 div 中,而不是添加到使用 before() 附加到文档的 div 中。
  • 是的,我正在努力防止出现错误答案。一旦我有我需要的信息,我会回答这个问题。到目前为止我还没有。 prompt 引用的元素与插入的元素相同。 jQuery 不会创建副本(除非选择了多个元素)。证明:jsfiddle.net/EJjdY.
【解决方案3】:

试试这个:

var prompt = $('<div>').text('test');

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 2016-09-08
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多