小编jAn*_*ndy的帖子

ECMA-/Javascripts Array.prototype.forEach

Javascript(ECMAscript)Array.prototype.forEach从版本1.6(ECMAscript edition 3,2005)开始支持该方法.因此,相当多的浏览器已经支持该方法,并且与jQuery的$.each()方法相比,它的速度非常快.
(实际上它胜过所有实现,无论哪个Javascript库)

与jQuery相比,它的速度提高了约60-70%.在JSPerf 上使用forEach和jQuery自己尝试一下.

到目前为止我唯一使用它的缺点是,我无法想象早点打破迭代的方法.喜欢for,while并且do-while有一个break声明,jQuerys .each()支持return false打破循环.

我查看了ECMAScript第5版规范(我发现的最新版本),但他们没有提到从该循环中提前中断.

所以,问题,Douglas Crockford先生会称之为design error
我错过了什么,有可能提前打破这样的循环吗?

编辑

谢谢你到目前为止的答案.我想既然没有人想出一个"原生"解决方案,那真的没有实现(可能是一个功能?).无论如何,我真的不喜欢建议的方法,所以我愚弄了一点,终于找到了一个我喜欢的(至少,更好).好像:

var div     = document.createElement('div'),
divStyle    = div.style,
support     = jQuery.support,
arr         = ['MozTransform', 'WebkitTransform', 'OTransform'];

arr.slice(0).forEach(function(v,i,a){    
    if(divStyle[v] === ''){
       support.transform = v;
       a.length = 0;
    }
});
Run Code Online (Sandbox Code Playgroud)

这是"真正的"生产代码.我找了一个查找css3转换属性的好方法,我迷失了ecma5规范和奇怪的Javascript论坛:-)

因此,您可以将数组对象本身作为第三个参数传递给.forEach回调.我从原始数组创建一个副本,一旦找到我正在寻找的东西,就调用slice(0)并将其.length属性设置为0.效果很好.

如果有人提出了更好的解决方案,我当然会编辑它.

javascript jquery ecma262

4
推荐指数
1
解决办法
1241
查看次数

区域优化算法

我有一个要求,将特定数量的矩形(具有定义的宽度但具有随机高度)插入另一个矩形(具有定义的高度和与要插入的矩形相同的定义宽度)。这里的目标是,那些插入的矩形应该尽可能多地填充目标矩形。

例如:

在此处输入图片说明

我不需要尽可能多的矩形进入黑色,目标是尽可能多地填充黑色矩形,最好的情况,完全。

实际上,有许多“黑色”矩形和数千个“红色”,我正在寻找一种有效的算法来计算。我必须在 ECMA-/Javascript 中实现它,所以它并不是所有平台中最快的。

我研究了一些算法,例如 Richard E. Korf 的“Optimal Rectangle Packing”或“Bin Packagings Problems”,但我无法真正针对这个特定问题翻译这些算法。

有人可以推荐我一种方法/算法吗?

algorithm math optimization

4
推荐指数
1
解决办法
1108
查看次数

String.fromCharCode和CharacterSets

我最近尝试在输入(文本)字段中镜像一些输入.运用

 String.fromCharCode(event.which)
Run Code Online (Sandbox Code Playgroud)

例如,正确翻译所有"标准"字符.好吧,它将它们全部翻译为大写,但您也可以通过查找shift键轻松捕获.

我的问题是,它不能翻译像点,逗号,问号等字符.首先猜测我必须定义一个字符编码集,但这似乎没有帮助.也许它完全不合适?

亲切的问候

--Andy

javascript jquery

3
推荐指数
1
解决办法
1713
查看次数

单击文档时隐藏,除非单击div

我想在点击文档时隐藏div,但是当有人点击它或点击其中的链接或按钮时我不想隐藏该div.此外,我在div设置中有一些链接,以防止点击操作(返回false;)并发送ajax请求.

我试过了:

$(document).click(function(e) {
      $('#bubble').hide();
});

$('#bubble').click(function(e) {
    return false;
});
Run Code Online (Sandbox Code Playgroud)

它工作正常,但#bubble下的链接和按钮不起作用.

jquery

3
推荐指数
1
解决办法
1802
查看次数

如何检查是否支持css box-shadow(jQuery)?

我正在创建一个完整的CSS布局.但是,某些浏览器(如IE6)不支持box-shadow(..和-webkit-box-shadow或-moz-box-shadow).我想检查它是否不受支持,然后添加其他样式.

这在jQuery中怎么可能?

Martti Laine

javascript css jquery

3
推荐指数
1
解决办法
2648
查看次数

解构和设置嵌套的默认值

我在这周围旋转了一会儿,但似乎我无法按照我希望的方式完成这项工作.实际上,我想要的是为可选参数设置嵌套的默认值.我想看到的输出应该是:

55, 44, { sub1: '0', sub2: 55, sub3: 'all'}
Run Code Online (Sandbox Code Playgroud)

相反,我只是得到这个:

55, 44, { sub2: 55 }
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个抬头吗?

function foo({ param1=55, param2=44, param3:param3 = { sub1:sub1='0', sub2:sub2=200, sub3:sub3='all' } } = { }) {
  console.log(param1, param2, param3);
}

foo({
  param3: {
    sub2: 55
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript destructuring ecmascript-6

3
推荐指数
1
解决办法
254
查看次数

除了在IE7中,简单的jQuery看起来很好

我使用jQuery和mouseenter/mouseleave创建了一个简单的动画.它在IE7,FF,Opera,Chrome和Safari中运行良好.

然而,IE7中出现了一些问题 - 根本没有任何反应 - 我甚至无法弹出警报框.

有人可以看一下我的代码,然后告诉我自己做错了什么才能把头发拉出来.

有问题的页面可以在www.ypfservice.net上查看 - 它是joomla安装的一部分,因此是膨胀的代码.

非常感谢

Ë

enter code here$('a.panelImage').parent().addClass('panel');      

 var numberLinks = $('a.panelImage').length;

 for (var j=0; j<numberLinks; j++){

var currentLink = $('a.panelImage').eq(j);          

$('<div class="fred"></div>').insertAfter(currentLink);

var gtr=(currentLink.position().left)+'px';

 $(currentLink).next().css({ // ie div.fred
    'position':'absolute',
    'background-position':'0 0',
    'top':'222px',
    'left':gtr,
    'display':'none',
    'z-index':'1000',
    'width':'5px',
    'height':'5px',
    'overflow':'hidden',
    'backgroundImage':'url(http://www.ypfservice.net/templates/ypftemplate/images/foyerPreview.jpg)',
       });

 }

 $('div.panel').mouseenter(function () {

 $(this).find('div').animate({          
       height: '138px', 
       width: '184px' 
    }, 500)     
})
.mouseleave(function () { 
    $(this).find('div').animate({ 
       'width': '0px', 
       'height': '0px' 
    }, 500); 
}); //end function 
Run Code Online (Sandbox Code Playgroud)

javascript jquery

2
推荐指数
1
解决办法
97
查看次数

使用jquery进行表单验证 - 返回false

有人可以告诉我为什么下面的代码不起作用.它应该提醒它.但即使字段为空,它也会在之后返回true.

<form id="theform" method="post" action="mailme.php">
<input id="field1" name="a" value="field1" type="text" />
<input id="field2" name="b" value="field2" type="text" />
<input id="field3" name="c" value="field3" type="text" />
<input id="field4" name="d" value="field4" type="text" />

<input type="submit" />
</form>
<script>
$('#theform').submit(function(){
    $('#theform input[type=text]').each(function(n,element){
        if ($(element).val()=='') {
             alert('The ' + element.id+' must have a value');
             return false;
        }
    });
    return true;
});

</script>
Run Code Online (Sandbox Code Playgroud)

forms validation jquery

2
推荐指数
1
解决办法
6545
查看次数

jQuery getAttribute

我有一个"uid"属性,它在我的"body"标签上有价值......

$(document).ready(regFunct());

function regFunct(){
   alert($("body").attr("uid"));
}
Run Code Online (Sandbox Code Playgroud)

但它说"未定义".有问题?

jquery

2
推荐指数
1
解决办法
2万
查看次数

使用.prependTo()时的奇怪余量

我在理解以下行为方面遇到了一些麻烦.我有一个<div>包含一些内联块 <div>节点的容器.示例视图:

在此输入图像描述

现在我的要求是,添加新的foob​​ar内联块 <div>元素.没问题,使用jQuery - > .prependTo()救援(应用于父容器).现在问题出现了,第一次使用.prependTo()"某个地方",在新插入的元素的右侧创建了一个不可跟踪的边距(它看起来像这样).例:

在此输入图像描述

正如你所看到的,只有第一个元素有这个边距(同样,我无法使用Firebug/DevTools跟踪空间,看起来它不存在).所有进一步的插入都很好.使用.insertBefore()的第一个元素上也工作正常,看起来不错.不幸的是,我不能.insertBefore()在我的特定用例中使用,这就是为什么我在这里要求一些单挑.

我错过了什么?从哪里来的这个奇怪的边距/间距?怎么避免呢?

这是jsfiddle游乐场,上面的图片来自:

http://jsfiddle.net/r7d6s/

到目前为止,我只在Firefox 4/5/6上测试过.

html javascript jquery

2
推荐指数
1
解决办法
118
查看次数