- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试找出此脚本在某些设备上失败的原因。它可以在 Firefox、Chrome 甚至 IE 浏览器中正常工作,但不能在 Safari IOS 中正常工作。
我在这里使用 iPad 通过 JS Fiddle 测试结果: Example »
HTML 取自 UAT 站点,因此有点粗犷,但我已将其略微缩减。以及从原来的 1000 行中剥离出来的脚本。
用于列计算的 JavaScript:
$.fn.manageColumns = function () {
function isVisible () {
return $(this).css("display") !== "none";
}
try {
var $that = $(this);
var $parent = $that.closest("form");
var data = $parent.data("state");
if (! $.isPlainObject(data)) { data = $parent.attr("data-state"); }
if (! $.isPlainObject(data)) { throw new TypeError("data-state not an object"); }
console.log(typeof data);
if ($.isPlainObject(data)) {
var groups = data.groups;
var groupString = "";
$.each(groups, function (key, value) {
groupString += "[data-column-group=\"" + value + "\"],";
});
if (groupString.length) {
groupString = groupString.slice(0, -1);
}
console.log(groupString);
var $visible = $that.find(groupString).not(".column-vis");
var $hidden = $that.find("[data-column-group]").not(".column-vis").not($visible);
var $all = $that.find("[data-column-all]").not(".column-vis");
$all.hide();
$visible.show();
if ($parent.width() < $that.width()) {
console.log("Will hide columns to fit screen size");
var maxIterations = 100;
var minGroups = 1;
var group = Number.MAX_VALUE;
for ( ; ($parent.width() < $that.width()) && (maxIterations > 0) &&
(group > minGroups); --maxIterations) {
var $nextElem = $that.find("col").filter(isVisible).last();
group = parseInt($nextElem.data("column-group"));
$that.find("[data-column-group=\"" + group + "\"]").not(".column-vis").hide();
}
var span = 0;
$that.find("col").each(function () {
var $vCol = $(this);
if ($vCol.isVisible()) {
var columnSpan = parseInt($vCol.attr("span"));
if (columnSpan <= 0) {
columnSpan = 1;
}
span += parseInt(columnSpan);
}
});
$all.attr("colspan", span).show();
}
else {
console.log("Don't need to hide columns");
$all.show();
$hidden.hide();
$visible.show();
}
}
}
catch (e) {
console.log(e.message);
}
};
HTML:
<body><div class="test-widget test-table-container"><div class="test-widget-bg"></div><span class="test-icon icon-setup test-icon-corner"></span><p class="test-widget-title">Schedule</p><p class="test-widget-info"></p><div><div><div class="test-table-gutter"><div class="test-table"><form action="javascript:;" autocomplete="off" data-feature-id="54188" data-source-id="a586120c-e3df-44a4-ab21-ef59c9a9f111" data-target-id="56836" data-widget-id="748" enctype="multipart/form-data" method="post"><table class="test-data-table table table-bordered table-hover table-column-control table-active"><colgroup><col class="row-status-color" span="1" /><col class="select-all-rows" span="1" /><col data-column-group="1" span="1" /><col data-column-group="2" span="1" /><col data-column-group="3" span="1" /><col data-column-group="4" span="1" /><col data-column-group="5" span="6" /><col data-column-group="6" span="5" /><col data-column-group="7" span="3" /><col data-column-group="8" span="7" /><col data-column-group="9" span="5" /></colgroup><thead><tr><th colspan="32" data-column-all="all"><div class="col-xs-12 col-sm-9"><div class="test-table-filters test-table-match"><div><div class="test-table-filter" data-filter-id="55f025e2-c68e-4210-a174-e34395a3e5dc"></div></div></div></div><div class="col-xs-12 col-sm-3"><div class="test-table-control test-table-match"><div class="test-auto-key test-control-select"></div><div class="multiselect test-control-select"><div class="select-box"><ul class="form-control"><li>Columns</li></ul><div class="checkboxes-over-select"></div></div><div class="checkboxes"><label for="2fba68e2-7d23-46bb-b340-075ef549b51f"><input checked="checked" class="column-vis" data-column-group="1" id="2fba68e2-7d23-46bb-b340-075ef549b51f" type="checkbox" />Name</label><label for="85f5631d-4fa2-4708-9001-075d67104ec6"><input checked="checked" class="column-vis" data-column-group="2" id="85f5631d-4fa2-4708-9001-075d67104ec6" type="checkbox" />Zone</label><label for="0a1e4226-4402-47ec-ae98-426ee767a4ed"><input checked="checked" class="column-vis" data-column-group="3" id="0a1e4226-4402-47ec-ae98-426ee767a4ed" type="checkbox" />Status</label><label for="47ebdbde-3f49-4d40-a855-d27b82865c50"><input checked="checked" class="column-vis" data-column-group="4" id="47ebdbde-3f49-4d40-a855-d27b82865c50" type="checkbox" />Roamable</label><label for="f70ceb61-1b6f-41cd-b251-5735dc7bd6b6"><input checked="checked" class="column-vis" data-column-group="5" id="f70ceb61-1b6f-41cd-b251-5735dc7bd6b6" type="checkbox" />Schedule</label><label for="2ef942c6-af71-4c00-ac95-0d87d443b8fd"><input checked="checked" class="column-vis" data-column-group="6" id="2ef942c6-af71-4c00-ac95-0d87d443b8fd" type="checkbox" />Authentication</label><label for="8ff2a2c5-5c1f-4ff7-bb99-95adfa20fe04"><input checked="checked" class="column-vis" data-column-group="7" id="8ff2a2c5-5c1f-4ff7-bb99-95adfa20fe04" type="checkbox" />Device</label><label for="babda357-ae2e-41fe-8434-4bf43a969c6d"><input checked="checked" class="column-vis" data-column-group="8" id="babda357-ae2e-41fe-8434-4bf43a969c6d" type="checkbox" />Vanity</label><label for="ca231149-ec2b-4235-b797-5616461190d7"><input checked="checked" class="column-vis" data-column-group="9" id="ca231149-ec2b-4235-b797-5616461190d7" type="checkbox" />Traffic</label></div></div><div class="test-row-count test-control-select"></div></div></div><div class="col-xs-12 test-attached-filters"></div></th></tr><tr class="column-grouping"><th class="row-status-color"></th><th></th><th colspan="1" data-column-group="1"></th><th colspan="1" data-column-group="2"></th><th colspan="1" data-column-group="3"></th><th colspan="1" data-column-group="4"></th><th colspan="6" data-column-group="5" style="background:rgb(109, 56, 107); color:#FFF;">Schedule</th><th colspan="5" data-column-group="6" style="background:rgb(204, 155, 56); color:#FFF;">Authentication</th><th colspan="3" data-column-group="7" style="background:rgb(192, 105, 119); color:#FFF;">Device</th><th colspan="7" data-column-group="8" style="background:rgb(150, 150, 116); color:#FFF;">Vanity</th><th class="last" colspan="5" data-column-group="9" style="background:rgb(138, 126, 149); color:#FFF;">Traffic</th></tr><tr class="column-headers"><th class="row-status-color"></th><th class="select-all-rows"><input class="check-all-rows" type="checkbox" /></th><th class="column-sortable check-active" data-column-group="1" data-source-id="49421">Name</th><th class="column-sortable check-active" data-column-group="2" data-source-id="56844">Zone</th><th class="column-sortable check-active" data-column-group="3" data-source-id="49426">Status</th><th class="column-sortable check-active" data-column-group="4" data-source-id="49427">Roamable</th><th class="column-sortable check-active" data-column-group="5" data-source-id="56841">Recurrence</th><th class="column-sortable check-active" data-column-group="5" data-source-id="56842">Limit</th><th class="column-sortable check-active" data-column-group="5" data-direction="ascending" data-source-id="49424">From</th><th class="column-sortable check-active" data-column-group="5" data-source-id="49425">Until</th><th class="column-sortable check-active" data-column-group="5" data-source-id="56852">Preparation Period</th><th class="column-sortable check-active" data-column-group="5" data-source-id="56853">Cleanup Period</th><th class="column-sortable check-active" data-column-group="6" data-source-id="56855">Default Access Code</th><th class="column-sortable check-active" data-column-group="6" data-source-id="56856">Bandwidth</th><th class="column-sortable check-active" data-column-group="6" data-source-id="56857">Priority Access Code</th><th class="column-sortable check-active" data-column-group="6" data-source-id="56858">Bandwidth</th><th class="column-sortable check-active" data-column-group="6" data-source-id="49431">Alert Threshold</th><th class="column-sortable check-active" data-column-group="7" data-source-id="49432">Limit</th><th class="column-sortable check-active" data-column-group="7" data-source-id="49434">Alert Threshold</th><th class="column-sortable check-active" data-column-group="7" data-source-id="49433">Currently Active</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56849">SSID</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56851">SSID Grace Period</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56850">Hide</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56846">Encryption</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56847">Protocol</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56848">Key</th><th class="column-sortable check-active" data-column-group="8" data-source-id="56845">VLAN</th><th class="column-sortable check-active" data-column-group="9" data-source-id="49438">Upload</th><th class="column-sortable check-active" data-column-group="9" data-source-id="49440">Packets</th><th class="column-sortable check-active" data-column-group="9" data-source-id="49439">Download</th><th class="column-sortable check-active" data-column-group="9" data-source-id="49441">Packets</th><th class="column-sortable check-active" data-column-group="9" data-source-id="49437">Logging</th></tr></thead><tbody><tr class="data-row" data-anch-target="28"><td class="row-status-color" style="background: rgb(109, 56, 107)"></td><td class="selecting"><input class="check" type="checkbox" value="28" /></td><td class="expand bold" data-column-group="1">Test</td><td class="expand" data-column-group="2">Guest</td><td class="expand" data-column-group="3">Active</td><td class="expand" data-column-group="4"><span class="icon-no"></span></td><td class="expand" data-column-group="5">Once</td><td class="expand" data-column-group="5">0</td><td class="expand" data-column-group="5">2016-03-08 00:00:00</td><td class="expand" data-column-group="5">2016-03-09 18:00:00</td><td class="expand" data-column-group="5">01:00:00</td><td class="expand" data-column-group="5">01:00:00</td><td class="expand" data-column-group="6">standard</td><td class="expand" data-column-group="6">Regular Speed Conference</td><td class="expand" data-column-group="6">best</td><td class="expand" data-column-group="6">Complimentary Low Speed (Lobby)</td><td class="expand" data-column-group="6">90</td><td class="expand" data-column-group="7">3</td><td class="expand" data-column-group="7">70</td><td class="expand" data-column-group="7">0</td><td class="expand" data-column-group="8">UAT_Test_SSID</td><td class="expand" data-column-group="8">00:30:00</td><td class="expand" data-column-group="8"><span class="icon-no"></span></td><td class="expand" data-column-group="8">None</td><td class="expand" data-column-group="8">WPA_CCMP</td><td class="expand" data-column-group="8"></td><td class="expand" data-column-group="8">UAT_CONFERENCE</td><td class="expand" data-column-group="9">0</td><td class="expand" data-column-group="9">0</td><td class="expand" data-column-group="9">0</td><td class="expand" data-column-group="9">0</td><td class="expand" data-column-group="9"><span class="icon-no"></span></td></tr></tbody></table></form></div></div></div></div></div></body>
如果您在 JS Fiddle 示例中展开窗口,您将看到根据屏幕宽度隐藏和显示的列。
我知道它的边缘有点粗糙,但我们将不胜感激。
最佳答案
bootstrap 将 100% 分配为表格宽度和表格最大宽度,因此在 Safari 中您的 if ($parent.width() < $that.width())
不起作用,因为 that
table 和 window 一样大,而不是更多。
只需添加
.table {
width: intrinsic;
max-width:intrinsic;
}
到你的CSS,你就完成了
关于javascript - 基于宽度计算的表格列显示和隐藏在 Safari IOS 设备中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918324/
好的,这听起来很简单,但我已经花了几个小时在谷歌上搜索,我只是找不到解决方案,这并不复杂。 我想创建一个包含图像和文本的表格。我希望表格的每一行都具有相同的高度。我希望文本始终从顶部开始。 IE。 \
在我的网站表单上 - 我的出生日期、月份和年份菜单显示在两行上,我希望它们都显示在同一行上。 当我测试代码时,它显示在一行中,所以我相信一定存在宽度问题。 您可以在右侧表格 (incomeprotec
我们需要跟踪和审核生产,本质上我们有很多订单,但我们似乎在途中丢失了一些产品(废品等)。 为了阻止这种情况,我们现在已在 Google 表格上下了订单,并列出了应有的数量,然后员工会写下收到的数量。
我正在转换我的应用程序,以便它适用于 iOS 7。在应用程序的一部分,我有两个搜索栏,每个搜索栏都有一个与之关联的 UISearchDisplayController。当我搜索 UISearchDis
正如标题所说,非固定表格布局是否与类似的 HTML 表格具有相同的性能问题? 最佳答案 非固定表格的问题在于,要确定一列的宽度,必须加载该列的所有单元格。这仅在...... …您有一个包含几千字节或几
我在使用 Javascript 遍历表格并从一行的第一个单元格获取文本时遇到问题。我想获取此单元格的文本,以便我可以将它与其他内容进行比较,如果文本匹配则删除该行。但是,当我尝试获取文本时,实际出现的
我经常发现自己想要制作一个表格表格——一堆行,每一行都是一个单独的表格,有自己的字段和提交按钮。例如,这是一个宠物店应用程序示例——假设这是一个结帐屏幕,您可以选择更新所选宠物的数量和属性,并在结帐前
看过许多UBB代码,包括JS,ASP,JSP的,一直没发现表格的UBB,虽然可以直接用HTML模式实现相同表格功能,但对于某些开放的站点来说开放HTML模式终究是不合适的,故一直想实现表格的UBB。
表格由 table 标签来定义。每个表格均有若干行(由 tr 标签定义),每行被分割为若干单元格(由 td 标签定义)。字母 td 指表格数据(table data),即数据单元格的内容。数据单元格
我有一个 HTML 与 border-radius和使用 position: sticky 的粘性标题看起来像这样: https://codepen.io/muhammadrehansaeed/pen
对于 iPhone 应用程序,我需要以网格格式显示只读表格数据。该数据可能有许多行和列。 我可以使用 UITableView,但问题是数据很可能会非常宽并且需要滚动。 有没有办法将 UITableVi
我知道这里有类似的问题,但我找不到适合我的答案。 我想要的是显示表单“默认”是选择了某些选项(在这种情况下,除了“Ban Appeal”或“Ban Appeal(西类牙语)”之外的所有内容,我希望仅在
天啊! 我想在Flutter中创建以下非常简单的表。基本上是两列文字,左列右对齐,右列左对齐。如果右列具有多个名称,则每一行都将顶部对齐。 左列应自动调整为最大项目的大小(因为每个标题都有翻译字符串)
我们开始构建 SSAS 表格模型,并想知道大多数人是否拥有一个或多个模型。如果有多个,您是否复制每个所需的表,或者是否有办法在模型之间共享表?我想我知道答案,但我希望那些有更多经验的人能够证实我们的发
tl;博士 如何将任意数量的单词分成两列,总是在最后一列中只有最后一个单词,在第一列中包含所有其他单词? =IFS( LEN(C2)-LEN(SUBSTITUTE(C2," ",""))=1, SP
你们知道一个图表或dable,它可以提供一个简短而简洁但仍然完整且相对最新的现有协议(protocol)及其细节的 View ? (即:ZeroMQ、Rendez-Vous、EMS、...所有这些!:
我才刚刚开始开发MFC应用程序,我希望对整个“控件”概念更加熟悉。我在Visual Studio中使用对话框编辑器,到目前为止,我无法找到添加简单表/网格的功能。这对我来说似乎很基础,但是我什至找不到
我需要对一个非常大的表或矩阵执行计算和操作,大约有 7500 行和 30000 列。 矩阵数据将如下所示: 文件编号|字1 |字 2 |字 3 |... |字 30000 |文档类 0032 1 0
我正在使用设计非常糟糕的数据库,我需要在编写查询之前重新调整表格。 以下是我的常见问题: 时间戳已分为两列(一列用于日期,另一列用于时间)。 一些字符串列也被拆分成多个列。 大多数字符串都有固定长度和
我正在尝试显示 $row["name"] 通过 HTML Table 的形式,如下所示: echo " ".$row["name"]." "; 我也从这里获取行变量: $que
我是一名优秀的程序员,十分优秀!