小编Šim*_*das的帖子

jQuery值选择器

我有:

<button class="Delete" value="1">Delete</button>
<button class="Delete" value="2">Delete</button>
<button class="Delete" value="3">Delete</button>
Run Code Online (Sandbox Code Playgroud)

给定包含值的变量X(在这种情况下为1,a 2或3),那么如何隐藏与X中的值对应的按钮?

我想说的是:

$('button').val(x).hide();
Run Code Online (Sandbox Code Playgroud)

含义:"值为x的按钮,隐藏".

html javascript jquery

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

覆盖JavaScript中比较运算符的默认行为

我有一个自定义的Javascript类(使用John Resig的简单Javascript继承创建).我希望能够比较这个类的两个实例,使用==,<,>,>=,和<=符号.

如何覆盖自定义类的比较器?

javascript inheritance overriding class object

10
推荐指数
3
解决办法
6226
查看次数

如何从包含AM/PM的日期字符串创建日期对象?

有没有办法用AM/PM值定义javascript日期对象?

像这样的东西

var startDate = new Date("1900-1-1 8:20:00 PM");
Run Code Online (Sandbox Code Playgroud)

javascript date

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

术语"全局属性"和"全局变量"是同义词吗?

全局对象充当顶级词汇环境(如果您愿意,则作为范围链的顶部).这意味着可以通过直接引用(如变量)访问全局属性:

// global code
this.foo = 1;        // creating a global property
foo                  // accessing the global property via a direct reference
Run Code Online (Sandbox Code Playgroud)

这也意味着可以通过属性引用访问全局变量:

// global code
var foo = 1;         // creating a global variable
this.foo             // accessing the global variable via a property reference
Run Code Online (Sandbox Code Playgroud)

解释1

现在,基于上述信息,似乎可以互换地使用术语"全局变量"和"全局属性",这意味着这两个术语代表完全相同的全局绑定集.


但是,使用var例如var foo = 1;通过赋值创建的全局属性创建的全局变量之间存在两个差异,例如this.foo = 1;:

  1. 全局变量是静态范围的,而全局属性是动态添加到全局环境中的:

    foo // => undefined
    bar // throws ReferenceError
    
    var foo = 1;
    this.bar = …
    Run Code Online (Sandbox Code Playgroud)

javascript variables scope properties global-variables

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

为什么IE10需要存在ap:hover {}规则才能使转换工作在伪元素上?

HTML:

<p>Hover</p>
Run Code Online (Sandbox Code Playgroud)

CSS:

p::after {
    content: " here";
    transition: all 1s;
}

p:hover::after {
    font-size: 200%;
    color: red;
}
Run Code Online (Sandbox Code Playgroud)

现场演示: http ://jsfiddle.net/SPHzj/13/(适用于Firefox和Chrome)

如您所见,我已经::after在段落的伪元素上设置了CSS转换.然后,当段落悬停时,两个新样式适用于转换的伪元素.

这适用于Firefox和Chrome,但不适用于IE10.我的理由是IE不理解p:hover::after选择器,因为它在IE中工作,如果你将悬停设置在祖先元素上,例如div:hover p::after- 现场演示:http://jsfiddle.net/SPHzj/14/.

但是,事实并非如此,因为IE确实能够理解选择器.诀窍是定义p:hover {}规则.(由@ maxw3st发现.)

p:hover {}
Run Code Online (Sandbox Code Playgroud)

此规则可以为空.仅仅存在这一规则将使IE10中的过渡工作成为可能.

现场演示: http ://jsfiddle.net/SPHzj/15/(也适用于IE10)

这里发生了什么?为什么IE要求转换才能在伪元素上运行?这应该被视为一个错误吗?

css pseudo-element css-transitions internet-explorer-10 css-content

10
推荐指数
2
解决办法
3394
查看次数

DOM appendChild插入图像

我有这个代码创建链接.

   /* Create a link to activate the tab */
    DOM_a = document.createElement("a");
    DOM_a.appendChild(document.createTextNode(t.headingText));
    DOM_a.href = "javascript:void(null);";
    DOM_a.title = t.headingText;
    DOM_a.onclick = this.navClick;
Run Code Online (Sandbox Code Playgroud)

我需要在链接中添加图像,但是当我尝试添加图像代码时:

<img src="typo3conf/ext/ori_proyectos/res/images/interes.png">
Run Code Online (Sandbox Code Playgroud)

我明白了:

Link<img src="typo3conf/ext/ori_proyectos/res/images/interes.png">
Run Code Online (Sandbox Code Playgroud)

并不是: Link[*_*]

[*_*]图像在哪里

源代码显示如下:

&lt;img src="typo3conf/ext/ori_proyectos/res/images/interes.png"&gt;
Run Code Online (Sandbox Code Playgroud)

我不知道怎么写.

谢谢.

javascript dom

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

评估JSON字符串 - eval()与新函数()

可能重复:
jQuery使用(new Function("return"+ data))(); 而不是eval(数据); 解析JSON,为什么?

给定一个表示有效JSON字符串的字符串,这两种解析方法之间是否存在差异:

var str, obj;

str = '{"prop":"value"}';

// method 1:
obj = eval( '(' + str + ')' );

// method 2:
obj = ( new Function( 'return (' + str + ');' ) )();
Run Code Online (Sandbox Code Playgroud)

我注意到jQuery使用第二种方法来解析JSON字符串(在没有内置JSON解析器的环境中).我想知道他们为什么不使用第一种方法.为什么要创建一个函数对象并在可以使用时调用它eval()

请完整关闭

javascript json eval

9
推荐指数
1
解决办法
2489
查看次数

比较$("#foo .bar")和$(".bar","#foo")的性能

向下滚动的getById.getByClassName对比qSA比较!


如果我们想要选择"bar"具有ID的元素内的所有类元素"foo",我们可以这样写:

$( '#foo .bar' )
Run Code Online (Sandbox Code Playgroud)

或这个:

$( '.bar', '#foo' )
Run Code Online (Sandbox Code Playgroud)

当然还有其他方法可以实现这一点,但是为了这个问题,我们只比较这两种方法.

那么,上述哪种方法表现更好?(这需要更少的时间来执行?)

我写了这个性能测试:

(function() {
    var i;

    console.time('test1');
    for( i = 0; i < 100; i++ ) {
        $('#question-mini-list .tags');
    }
    console.timeEnd('test1');

    console.time('test2');
    for( i = 0; i < 100; i++ ) {
        $('.tags', '#question-mini-list');
    }
    console.timeEnd('test2');
})();
Run Code Online (Sandbox Code Playgroud)

您必须在Stack Overflow开始页面的控制台内执行它.我的结果是:

Firefox:
test1:~90ms
test2:~18ms

Chrome:
test1:~65ms
test2:~30ms

Opera:
test1:~50ms
test2:~100ms

所以在Firefox和Chrome中,第二种方法的速度要快很多倍 - 就像我预期的那样.然而,在Opera中,情况正好相反.我想知道这里发生了什么.

你可以在你的机器上运行测试并解释为什么Opera的表现不同吗?


更新

我写了这个测试,以调查Opera的qSA是否真的超级快.事实证明,它是.

(function() {
    var i, …
Run Code Online (Sandbox Code Playgroud)

javascript browser performance jquery

9
推荐指数
1
解决办法
343
查看次数

在JavaScript中检查null/undefined

可以这个代码

if (typeof foo != "undefined" && foo !== null) { }  
Run Code Online (Sandbox Code Playgroud)

安全地重构为这段代码?

if (foo != null) { }
Run Code Online (Sandbox Code Playgroud)

这是完全一样的吗?(如果没有,它有什么不同?)

javascript

8
推荐指数
1
解决办法
5529
查看次数

在(桌面)浏览器中引用内置全局属性X时,是否应该写一个window.X?

因此,(桌面)浏览器中有许多内置的全局属性.例如:

  • document
  • undefined
  • parseInt
  • JSON
  • location
  • alert
  • setTimout
  • 等等

在引用这些属性时,是否应该通过在其名称前加上明确地将它们标记为全局属性window.?所以,例如:

var wrap = window.document.getElementById('wrap');
Run Code Online (Sandbox Code Playgroud)

window.setTimeout(loop, 100);
Run Code Online (Sandbox Code Playgroud)

var x = window.parseInt(input.value, 10);
Run Code Online (Sandbox Code Playgroud)

我认为这个问题有三个答案:

  1. 是的,window.X在引用全局属性时应始终写.

  2. 不,你不必写window.X.只要X是好的.

  3. 这取决于财产.对于某些属性,请使用window.X,对于某些其他属性使用X.(如果这是你的答案,请详细说明.)

那么,这是什么?

javascript browser window global-variables

8
推荐指数
2
解决办法
1035
查看次数