代码之家  ›  专栏  ›  技术社区  ›  Stephen

jquery.attr(“type”,“submit”)在一个按钮元素上给出了IE7中一个奇怪的错误。

  •  6
  • Stephen  · 技术社区  · 14 年前

    $.ajax() 从这个对象的值构建一个窗体。我写的剧本很长,但它的作用是:

    1. 动态创建:
      ~表单元素,
      ~一个fieldset元素,
      ~按钮元素,
      大约20个文本输入和标签元素

    2. 将输入和标签附加到字段集

    3. 将按钮追加到字段集

    4. 将字段集附加到表单

    5. 将窗体附加到现有DOM中的元素。

    除了IE中的一个小片段外,所有的浏览器都在工作。我把它缩小到下面的代码段。( doc 是包含 document )

    fieldset.append(
        $(doc.createElement('button'))
            .addClass('ui-button')
            .attr('type', 'submit')
            .html('Re-Rate')
            .button()
    );
    

    这是上面的步骤3。它创建一个button元素,添加一个类,设置 type 属性到 submit ,给它一些文本,然后将其附加到字段集。IE失败,错误为“对象不支持此操作”

    如果我评论 .attr() 这样的线:

    fieldset.append(
        $(doc.createElement('button'))
            .addClass('ui-button')
            //.attr('type', 'submit')
            .html('Re-Rate')
            .button()
    );
    

    一切正常。

    如果你想知道, .button() 方法是jquery UI

    2 回复  |  直到 14 年前
        1
  •  10
  •   Nick Craver    14 年前

    JQuery doesn't allow you to change the type of an <input> or <button> element .

    这样做的原因是一致性 类型 一旦插入到DOM中。

        2
  •  0
  •   gabriel    14 年前

    jquery不允许您修改 type 属性设置在现有的button元素上,因为尝试执行此操作时IE会引发错误。

    但是,您可以尝试这样做(使用jquery 1.4更简洁的元素创建语法):

    fieldset.append(
      $('<button>', {'type': 'submit', 'class': 'ui-button', 'html': 'Re-Rate'}).button()
    );