- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个文本框,其中输入了逗号分隔/分隔的值,我必须确保其中的条目是唯一的。解决了使用 Paul Irish's Duck Punching example #2并将其绑定(bind)到该文本框的 onblur。
输入到文本框中的值被分解到一个表中。由于表格可能会变得很长,我找到了 Mottie's Tablesorter出色地工作。
问题是,Duck Punching 代码破坏了 Tablesorter。 Tablesorter 的样式传递得很好,但表格实际上并没有排序。但是,当我注释掉 Duck Punching 代码时,Tablesorter 奇迹般地起作用了。
我的编码技能还不够,我无法弄清楚为什么两者会发生冲突。如有任何帮助,我们将不胜感激。
我没有修改 Tablesorter 代码或向其中添加任何特殊的排序元素……现在只是按照非常基本的示例进行操作。这是 Duck Punching 代码,我只是对其进行了修改,以包含我需要具有唯一条目的文本框的 var。
function ValidateTextBox1()
{
(function($){
var arr = document.getElementById("TextBox1").value.split(',');
var _old = $.unique;
$.unique = function(arr){
// do the default behavior only if we got an array of elements
if (!!arr[0].nodeType){
return _old.apply(this,arguments);
} else {
// reduce the array to contain no dupes via grep/inArray
return $.grep(arr,function(v,k){
return $.inArray(v,arr) === k;
});
}
};
})(jQuery);
}
上面的函数在一个单独的 js 文件中,通过 onblur 为 TextBox1 调用。
然后,我有一个运行以下命令的按钮:
function GenerateTable()
{
var Entry1 = document.getElementById("TextBox1").value
var Entry2 = document.getElementById("TextBox2").value
var content = "<table id=myTable class=tablesorter ><thead><tr><th>Entry 1 Values</th><th>Entry 2 Value</th></tr></thead><tbody>"
var lines = Entry1.split(","),
i;
for (i = 0; i < lines.length; i++)
content += "<tr><td>" + (Entry1.split(",")[i]) + "</td><td>" + Entry2 + "</td></tr>";
content += "</tbody></table>"
$("#here_table").append(content);
$(function(){
$("#myTable").tablesorter({
theme: 'default'
});
});
}
该函数将在特定 DIV 中生成/附加表格。
如果我留在 TextBox1 的验证代码中,该表将生成但不可排序(尽管它仍然设法拉动主题)。
如果我删除验证码,表格将生成并可排序。
最佳答案
上面的 validateText 框函数将无法按预期工作。在这种情况下,甚至不需要“打鸭子”。
这是我修复脚本的方法 ( demo ):
HTML
<textarea id="textbox1">6,1,7,5,3,4,3,2,4</textarea><br>
<textarea id="textbox2">column 2</textarea><br>
<button>Build Table</button>
<div id="here_table"></div>
脚本(需要 jQuery 1.7+)
(function($) {
// bind to button
$(function () {
$('button').on('click', function () {
// disable button to prevent multiple updates
$(this).prop('disabled', true);
generateTable();
});
});
function unique(arr) {
return $.grep(arr, function (v, k) {
return $.inArray(v, arr) === k;
});
}
function generateTable() {
var i,
$wrap = $('#here_table'),
// get text box value, remove unwanted
// spaces/tabs/carriage returns & create an array
val = $('#textbox1').val().split(/\s*,\s*/),
// get unique values for Entry1
entry1 = unique( val ),
entry2 = $('#textbox2').val(),
content = "";
// build tbody rows
for (i = 0; i < entry1.length; i++) {
content += "<tr><td>" + (entry1[i] || '?') + "</td><td>" + entry2 + "</td></tr>";
}
// update or create table
if ($wrap.find('table').length) {
// table exists, just update the data
$wrap.find('tbody').remove();
$wrap.find('table')
.append(content)
.trigger('update');
} else {
// table doesn't exist, build it from scratch
$wrap
.html('<table id=myTable class=tablesorter><thead><tr>' +
'<th>Entry 1 Values</th>' +
'<th>Entry 2 Value</th>' +
'</tr></thead><tbody>' + content + '</tbody></table>')
.find('table')
.tablesorter({
theme: 'blue'
});
}
// enable the button to allow updating the table
$('button').prop('disabled', false);
}
})(jQuery);
我尝试添加一些注释以更清楚地说明每个步骤的作用。请随时要求任何澄清。
关于javascript - Duck Punching/Monkey Patching 破坏了 Tablesorter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21634468/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我习惯于动态类型意味着在运行时检查对象/非面向对象结构的类型信息并抛出某种类型错误,即如果它像鸭子类型(duck typing)一样嘎嘎叫,它就是一只鸭子类型(duck typing)。是否有不同类型
这是《Practical Object-Oriented Design in Ruby》书中的一个示例。我有兴趣将这个 ruby 代码翻译成 javascript,以便更好地理解 JS 中的鸭子类
我又在 Scala 闲逛,我希望这是一个关于鸭子类型的基本问题,或者它可能真的与函数定义有关。让我解释: 鉴于以下代码: package johnmcase.scala.oneoffs object
Typescript 在某些情况下执行“鸭子”键入,例如当您针对接口(interface)检查函数参数的有效性时。 例如: interface Named { name: string } fun
代替遍历集合,有时在过程上循环遍历它们更方便。为了避免根据输入区分$_和$_.Key / $_.Value,更一致的键/值处理将是不错的: ForEach-KV $object { Param($k,
我正在使用带有继承的面向对象方法来解决问题,并且我想知道如何将“鸭子类型(duck typing)”原则应用于此问题。 我有一个类 BoxOfShapes ,它将使用 Shapes 列表(Circle
我正在尝试找到一种方法来为继承一对相似接口(interface)的两个对象表达共同的基类型。 请看下面的代码:很明显,fb1 和 fb2 应该有一个可能的公共(public)基类型(例如,类似 IFi
我有一个使用参数元组创建类实例的“工厂”: def factory(cls, arg): return cls(*arg) class Foo(object): def __init__(se
我正在编写一个 Duck 类,这样创建的每个 Duck 对象都包含翼展和重量字段变量。每只鸭子都应该随机初始化这些中的每一个。翼展应初始化为 [80.0,100.0]cm 范围内的随机 float 。
我有一些代码可以在我的应用程序中实现音频闪避。当用户正在听一些音乐时,然后进入某个位置,将播放特定的音乐片段。发生这种情况时,正在播放的原始音乐“低声”(或变得更安静),而我的应用程序开始播放的新音乐
如 TypeScript 中所述 handbook : One of TypeScript’s core principles is that type-checking focuses on the
Python 有特定的 ABCs for container types .它说它们是,“……用于测试类是否提供特定接口(interface)。” (而且它们对某些混入也很有用,但我们暂时忽略它。)
问题 我现在已经阅读了很多关于 Duck Typing 的内容,并且我似乎理解了这个概念。 我不明白的是,在什么情况下放弃强类型化编程的好处而转向 Duck Typing 的好处实际上是有意义的。 在
我的文档太多了,因为每当我遇到一个复杂的鸭子类型(duck typing)时,我都需要某种方式来表达“这个鸭子类型(duck typing)”,但却陷入了“你的函数需要这个输入的这个”的无休止循环,但
在 Advantages of Exceptions Java™ 教程的部分: A method can duck any exceptions thrown within it, thereby a
在我目前的工作中,我正在构建一套严重依赖对象的 Perl 脚本。 (在哈希上使用 Perl 的 bless() 以尽可能接近 OO) 现在,由于缺乏更好的表达方式,我公司的大多数程序员都不是很聪明。更
Can I specify interfaces when I declare a member? 在考虑了这个问题一段时间后,我突然想到静态鸭子类型(duck typing)的语言可能真的有效。为什
我对这两个术语有点困惑,这就是我所知道的: 多态性是不同类型的对象由一个公共(public)接口(interface)处理的能力。而鸭子类型(duck typing),是一种动态类型,它允许不同类型的
所有动态语言都支持duck typing ? 我认为 PHP 支持鸭子类型(duck typing)。是这样吗? 最佳答案 任何动态类型的 oop 语言都支持鸭子类型(duck typing),包括
我是一名优秀的程序员,十分优秀!