一个指令可以使用jqLit​​e修改子元素的宽度吗?

时间:2015-02-19 18:41:47

标签: jquery angularjs

我有一个指令克隆其目标表元素,然后修改克隆。我想改变克隆表中行(或单元格)的宽度。

使用jqLit​​e,该指令可以设置表的宽度:

elem.css({width: 180+'px'});

对表中的行(或td)执行类似的语句会产生'TypeError:undefined不是函数':

row.css({ width: cellWidth+'px' });

这个jQuery片段完全符合我的需要:

var $fixedTable = fixedTable;
$fixedTable.find('tr').each(function (x, elem) {
    $(elem).find('th,td').each(function (i, elem) {
        $(elem).width(cellWidth);
    });
});

可以使用jqLit​​e完成,还是需要使用jQuery来更改行宽?

2 个答案:

答案 0 :(得分:0)

jqLit​​e是jQuery的一个子集。 jqLit​​e包含仅限于按标记名称查找的find()方法。我需要查看更多代码,但如果您只使用标签(tr,th,td等),那么您应该只能使用jqLit​​e选择所需的子元素。 jqLit​​e不包含您在上面使用的width()方法。您可以使用addClass()作为解决方法,但是您需要具有预定义的宽度类。我希望这有帮助。有一种观点认为你应该避免使用AnguarJS的jQuery。您应该能够轻松使用jqLit​​e,但这取决于确切的用例。

https://docs.angularjs.org/api/ng/function/angular.element

Angular的jqLit​​e jqLit​​e仅提供以下jQuery方法:

  • addClass()
  • ...
  • find() - 仅限于按标记名称
  • 进行查找

答案 1 :(得分:0)

我认为问题是你如何遍历elem到孩子(row),因为

row.css({ width: cellWidth+'px' });

是对的。可能你必须使用类似的东西:

row = elem.children(XY);

请参阅Angular's jqLite文档以供参考。