【问题标题】:$.append before changing $.prop('name')? (name attribute not showing in Chrome "Elements")$.append 在更改 $.prop('name') 之前? (名称属性未显示在 Chrome“元素”中)
【发布时间】:2013-06-10 14:05:07
【问题描述】:

我正在动态地构造重复出现的 html 元素。

我正在创建一个display:table,一切似乎都很顺利,但是当我在一个元素被$.append()ed 之前更改它的name 时,它不会出现在Chrome“元素”中并且以后不能被 jQuery 选中;但是,在$.append()ing 之前,$.prop('name') 可以是alert()ed。

在更改$.prop('name')之前,动态构造的元素是否应该是$.append()ed?

代码示例:

$.fn.appendSingleRecordInsert = function(paramaterObject) {
    return this.each(function () {
        var $appendDiv = $('<div/>')
        ...
        $.each(paramaterObject.rows, function(rowKey, rowValue){
            var $rowDiv = $('<div/>');
            $.each(rowValue.columns, function(columnKey, columnValue){
                var $columnDiv = $('<div/>');
                if(typeof columnValue.name !== 'undefined'{
                    $columnDiv.prop('name', columnValue.name);
                }
                ...
                $rowDiv.append($columnDiv);
            })
            $appendDiv.append($rowDiv);
        });
        $(this)[paramaterObject.domInsertMethod]($appendDiv);
    });

【问题讨论】:

  • 元素可见并显示在检查元素中,但名称错误?你试过attr吗?
  • @JamesMontagne 是的,它周围的所有其余代码都按预期工作。认为attr 是“坏”;)) 会尝试!....UPDATE:它成功了!想扩大回答?知道为什么吗?
  • 至少在我看来,attr 在处理尚未添加到 dom 的元素时更有意义。
  • 检查一些事情。发布了答案,可能会更新更多细节。
  • 当你说它“不能被 jQuery 选择”时,你的意思是你试图用属性选择器进行选择吗? $("div[name=...?

标签: javascript jquery constructor append name-attribute


【解决方案1】:

name property 不适用于 &lt;div&gt; 元素 - 它们没有 name 属性。因此,您所做的属性更改不会反映在属性值(DOM 检查器)中。

如果需要选择器,则应使用 id 或类。

【讨论】:

    【解决方案2】:

    您可以尝试使用attr 而不是prop。 “属性选择器”基于属性而不是属性进行选择。要执行$("div[name=... 之类的操作,您必须设置属性,而不是属性。

    应该注意,虽然name 不是div 的有效属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多