小编Lac*_*cD.的帖子

在jQuery中绑定多个事件

我有一个自定义的jQuery插件,它将change事件绑定到表单元素,在这种情况下是一些input元素.该change事件用于向某些其他组件指示已发生更改.

这应该是正常的.

但是,我遇到了将附加change事件绑定到相同input元素的需要 - 以便其他组件可以对事件起作用.我不想更换插件change,之后再运行一个额外的功能.

有没有办法在jQuery中绑定多个事件,或者,实现这个的最佳方法是什么?

javascript jquery

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

PHP对整数键的array_merge_recursive行为

有没有一种递归合并数组的方法,就像PHP的array_merge_recursive()函数一样,除了整数键被视为与字符串键相同?

(对于进程而言,密钥仍然可以作为整数进行解析,这一点非常重要.)

例如:

$a = array(
    'a' => array(1)
);
$b = array(
    'a' => array(2, 3)
);
var_dump(array_merge_recursive($a, $b));
Run Code Online (Sandbox Code Playgroud)

"a"按照预期合并键和输出,如下所示:

array(1) {
    ["a"] => array(3) {
        [0] => int(1)
        [1] => int(2)
        [2] => int(3)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当使用整数键时(即使作为字符串):

$a = array(
    '123' => array(1)
);
$b = array(
    '123' => array(2, 3)
);
var_dump(array_merge_recursive($a, $b));
Run Code Online (Sandbox Code Playgroud)

array_merge_recursive() 将返回:

array(2) {
    [0] => array(3) {
        [0] => int(1)
    }
    [1] => array(2) {
        [0] => …
Run Code Online (Sandbox Code Playgroud)

php arrays multidimensional-array

10
推荐指数
1
解决办法
2330
查看次数

有点简单的PHP数组交集问题

也许我会疯了,但我可以发誓有一个PHP核心函数,它将两个数组作为参数:

$a = array('1', '3');
$b = array('1'=>'apples', '2'=>'oranges', '3'=>'kiwis');
Run Code Online (Sandbox Code Playgroud)

并执行一个交集,$a检查数组中的值是否与数组中的键发生冲突$b.回归之类的

array('1'=>'apples', '3'=>'kiwis');
Run Code Online (Sandbox Code Playgroud)

这样的功能是否存在(我在文档中遗漏了),还是有一种非常优化的方法来实现同样的功能?

php arrays intersection key

6
推荐指数
1
解决办法
3602
查看次数

video.js currentTime()不正确,直到timeupdate事件触发

我注意到一个小的不一致性,我希望将其验证为HTML5的一个怪癖,或者是Video.js的特定内容.

看来如果你currentTime()在提供新时间的同时调用Video.js的功能,任何进一步调用currentTime()(获取当前时间)将不会返回正确的时间(它将返回上一次),直到timeupdate事件触发.timeupdate活动结束后,currentTime()将返回正确的时间.

例如,假设视频尚未开始播放,但Video.js已加载,以及所有视频元素等:

videoPlayer.addEvent('timeupdate', function() {
    console.log('Event callback: ' + player.currentTime); 
});
console.log('Original time: ' + player.currentTime);  
player.currentTime(100);          
console.log('New time: ' + player.currentTime);  
Run Code Online (Sandbox Code Playgroud)

我期待的输出看起来像:

Original time: 0
New time: 100
Event callback: 100
Run Code Online (Sandbox Code Playgroud)

但是我收到的是:

Original time: 0
New time: 0
Event callback: 100
Run Code Online (Sandbox Code Playgroud)

任何见解都会很棒!

编辑:我可以在OSX上的Chrome和Safari中重现这一点,但不能在OSX上重现这一点(全部使用HTML5).我也可以使用Flash播放器和使用HTML5播放器的IE9在IE8上重现这一点.

javascript html5 html5-video video.js

6
推荐指数
1
解决办法
6006
查看次数

复杂字符串比较

我正在尝试在PHP中编写一个函数,它接受一个字符串数组(needle)并执行与另一个字符串数组(haystack)的比较.此函数的目的是为AJAX搜索快速提供匹配的字符串,因此需要尽可能快.

这里有一些示例代码来说明这两个数组;

$needle = array('ba','hot','resta');

$haystack = array(
    'Southern Hotel',
    'Grange Restaurant & Hotel',
    'Austral Hotel',
    'Barsmith Hotel',
    'Errestas'
);
Run Code Online (Sandbox Code Playgroud)

虽然这本身很容易,但比较的目的是计算有多少needle字符串出现在haystack.

但是,有三个限制;

  1. 比较不区分大小写
  2. needle必须只在单词的开头的字符匹配.例如,"hote"将匹配"Hotel",但"resta"将不匹配"Errestas".
  3. 我们想要计算匹配needles的数量,而不是needle出现次数.如果一个地方被命名为"酒店宾馆酒店",我们需要的结果1不是3.

使用上面的例子,我们期望得到以下关联数组:

$haystack = array(
    'Southern Hotel' => 1,
    'Grange Restaurant & Hotel' => 2,
    'Austral Hotel' => 1,
    'Barsmith Hotel' => 2,
    'Erresta'  => 0
);
Run Code Online (Sandbox Code Playgroud)

我一直在尝试实现一个函数来执行此操作,使用一个preg_match_all()看起来像的正则表达式/(\A|\s)(ba|hot|resta)/.虽然这确保我们只匹配单词的开头,但它没有考虑包含相同needle两次的字符串.

我发帖看看别人是否有解决方案?

php

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

在输入元素中垂直居中文本

我有以下输入元素(我故意省略了示例中不需要的属性):

<input type="text" style="display: block; height: 40px; font-size: 14px; line-height: 40px"/>
Run Code Online (Sandbox Code Playgroud)

在Chrome和Internet Explorer(也可能是Opera)中,输入内的任何文本都将垂直居中.但是,Firefox似乎忽略了这个声明.将其设置为display: inline-block;替代或使用vertical-align: middle;在Firefox中没有任何效果.

我也尝试将顶部和底部填充设置为13px,并将高度设置为14px(与字体大小相结合)将导致元素40px高.这按预期工作; 除了任何带有尾部的字符(如g,q,j等)在底部被切掉.

我正在寻找一种跨浏览器解决方案,用于在具有固定高度的输入框中垂直对齐文本.输入元素将具有自己的悬停和焦点样式,因此通过将元素本身垂直放置在40px高空间中来伪装居中并不是一种选择.

干杯

css input vertical-alignment

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

Javascript自定义Array.prototype干扰for-in循环

我试图用一个函数来扩展Javascript的Object类型,该函数检索属于该对象的所有属性名称(基本上是PHP的array_keys()函数对关联数组的作用).

Object.prototype.keys = function() {
    var a = [];
    for (var property in this) {
        a.push(property);
    }
    return a;
};

var a = {a:1,b:2,c:3,d:4};
alert(a.toSource());

var b = a.keys();
alert(b.toSource());
Run Code Online (Sandbox Code Playgroud)

当变量b被警告时,我期待看到["a","b","c","d"],而不是我看到的["a","b","c","d","keys"].

看来for-in循环包括原型keys()函数.

是否有可能在仍然进行原型设计的同时避免这种行为,或者我是否应该避免一起进行原型设计?

javascript

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