$('。add')。live('click',function()

时间:2013-04-16 03:46:29

标签: javascript jquery html

我似乎无法在我的javascript中添加选项标记。帮我sifu。
我正在尝试做的是添加按钮的功能。

    var scntDiv = $('.input');
    var i = $('.input p').size() + 0;

$('.add').on('click', function() {
            $('<p><input type="text" name="barcode' + i + '" id="textbox_input1" placeholder="Barcode"/>                <input type="text" name="item' +i+ '" id="textbox_input1" placeholder="Item"/>              <input type="number" name="qtty' +i+ '" id="textbox_input1" placeholder="Quantity"/>                <input type="number" name="min' +i+ '" id="textbox_input1" placeholder="Minimum"/>              <select name="category' +i+ '" id="textbox_input1"/><option value="Grocery">Grocery</option><option value="Furniture">Furniture</option></select>               <input type="text" name="price' +i+ '" id="textbox_input1" placeholder="Price"/>                <input type="text" name="promo' +i+ '" id="textbox_input1" placeholder="Promo"/>                <button type="button" class="remove" id="button">Remove</button></p>').appendTo(scntDiv);
            i++;

            return false;

    });

请帮帮我。我的问题是单击添加按钮时不显示选项值。这个

<select name="category' +i+ '" id="textbox_input1"/><option value="Grocery">Grocery</option><option value="Furniture">Furniture</option></select>

没有在脚本中给出任何选项。

4 个答案:

答案 0 :(得分:0)

直播改为:

$('body').on('click', '.add', function() {
    // do something
});

注意:将'body'更改为.add的父元素,最好是带有ID的父元素。

另请参阅jQuery 1.9 .live() is not a functionjQuery - how to use the “on()” method instead of “live()”?

JSfiddle:http://jsfiddle.net/samliew/tPdyT/

答案 1 :(得分:0)

我建议不要使用.live()并升级到最新版本的jQuery 1.9.1。

  • .live()已弃用,并替换为.on()
  • 而不是返回false使用preventDefault(以避免意外行为)
  • i ++仅适用于循环内部,因此请考虑使用.each()

    $('document')。on('click','。add',function(e){     e.preventDefault();     // 做一点事 });

有关下次代码的更多帮助,请说明您要实现的目标,并发布更多代码,以便我们最好地回答您的问题。

答案 2 :(得分:0)

本规范不是最佳做法。

  1. 变量i未初始化
  2. 将生成相同的id标记。
  3. scntDiv似乎是未定义的变量。

答案 3 :(得分:0)

在编写选项标记之前,使用<select/>关闭select元素。哪个应该是<select>。也就是说,删除第一个标记末尾的额外/

所以它变成了这样:

<select>
  <option></option>
  <option></option>
</select>

而不是:

<select/>
  <option></option>
  <option></option>
</select>

当然,添加您之前使用的属性。

我还建议看一下其余的答案。