1

背景:

我有一个 CMS 工具,允许用户在内容区域内创建一个表格。如果使用边框选项,该工具会在表格上设置边框属性,并且不使用样式。我的重置样式表默认所有表格都没有边框,这会覆盖表格边框属性(即不显示边框)。

作为一个快速破解,我放入了一些 jQuery 来抓取具有非 0 边框属性的表格元素,并将边框属性转换为内联样式。

我的问题:

虽然我能够让代码正常工作,但这并不是我最初想要的解决方案。

这目前正在工作:

    $("table[border!='0']").css('border', function() { 
         return $(this).attr('border') + "px solid"; 
    });

我最初的解决方案是不需要 css 方法中的函数 -

$("table[border!='0']").css('border', $(this).attr('border') + "px solid");

我在写这个问题时意识到 $(this) 并没有引用选择中的每个项目,就像它在函数内部所做的那样,因此是我的问题。

jsFiddle

没有这个功能有没有办法做到这一点?

4

1 回答 1

1

不,使用该功能是唯一(也是最好的)方法,否则您无法单独访问每个项目。

请注意,您的代码包含一个错误:$(this).attr['border']应该是$(this).attr('border')- 否则您总是会得到undefinedpx solid这没有多大意义。

但是,只要您没有大量不同的值,border就可以使用 CSS:

table[border=1] { border: 1px solid; }
table[border=2] { border: 2px solid; }

显然,这对于许多不同的值来说会很混乱,但很有可能你没有很多不同的边框宽度。

于 2012-07-10T11:35:37.710 回答