【问题标题】:jQuery .append executes multiple times on single objectjQuery .append 在单个对象上执行多次
【发布时间】:2012-08-31 02:15:05
【问题描述】:

我想使用 jQuery .append 将 div 插入到另一个父 div 中,该 div 是列表元素的一部分,由一个动态创建的表单字段组成。虽然父类只包含一个对象(即文本字段)并且在整个文档中只存在一次,但 .append 将 div 添加了六次。它适用于 JSfiddle,但不适用于我的本地代码(Magento 形式)。这是为什么?会不会和父类的动态创建有关?

PHP

$input_name     = $this->getInputName();
$input_id       = $this->getInputId();
$input_value    = $this->getValue();
$input_class    = $this->getInputClass();
$label          = $this->getLabel();

<div class="input-box <?php echo $input_id;?>">
 <input type="text" name="<?php echo $input_name;?>" id="<?php echo $input_id;?>" value="<?php echo $this->htmlEscape($input_value) ?>" title="<?php echo $this->__($label); ?>" class="<?php echo $input_class;?>" />
</div>

使用 jQuery

$(".input-box.billing_postcode") .append("<div>My Link</div>")

总是会导致下面的 HTML

<li>
<div class="input-box billing_postcode">
<input id="billing_postcode" class=" input-text required-entry absolute-advice " type="text" title="ZIP" value="" name="billing[postcode]">
<div>My Link</div>
<div>My Link</div>
<div>My Link</div>
<div>My Link</div>
<div>My Link</div>
<div>My Link</div>
</div>

【问题讨论】:

  • 代码被多次运行。它在哪里运行?什么在执行它?改变事件?点击事件?
  • $(".input-box") .append("
    我的链接
    ") 而不是 $(".input-box.billing_postcode") .append("My Link
    ") 将你的 jquery 代码放在循环之外
  • @KevinB:这是一个修改我正在尝试自定义的默认结帐表单的模块,我将更深入地研究代码,看看是否能找到您问题的答案。跨度>
  • @AshirvadSingh 是的,这将使其脱离循环,但会将链接应用到所有其他 div,例如输入框运输表格、付款表格等。
  • 标签: php jquery


    【解决方案1】:

    这应该可以解决:

    var $element = $(".input-box.billing_postcode");
    if($('.foo', $element).length == 0) {
        $element.append('<div class="foo">My Link</div>');
    }
    

    【讨论】:

    • 太好了,做到了!非常感谢!
    猜你喜欢
    • 2017-04-10
    • 2016-04-26
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多