没有链的jQuery?

时间:2009-12-16 03:20:50

标签: jquery

我知道可以在更多类似JavaScript的语法中编写jQuery而不是所有链式内容(这很棒)。很难找到一篇教程来为那些想要使用较少可链接脚本的人提供一个理解,那么在哪里可以找到任何类型的教程?

虽然链条不坏,但它需要一个有效的学习曲线。高效。我在JavaScript方面有一些经验,所以如果我可以重新使用我现有的知识(a.k.a懒惰,在严格和快速的工作环境中学习新东西),那将会很棒。

PS:我通常使用较少的链式框架,例如Adobe Spry Framework(死的,遗憾的),所以我希望我可以在jQuery上编写代码时使用类似的方法。

4 个答案:

答案 0 :(得分:4)

由于链的每个部分都返回一个jQuery对象,因此可以将链分解为单独的部分。

所以,这......

$("<div>inner</div>")
    .appendTo("<div>outer</div>")
    .appendTo("body");

完全相同:

var myDiv = $("<div>inner</div>");
myDiv.appendTo("<div>outer</div>");
myDiv.appendTo("body");

但请相信我,一旦你习惯它,它将成为第二天性。查看this article以获取更多建议......

答案 1 :(得分:1)

关于jQuery的好处是core jQuery object的大多数函数都将返回另一个具有相同功能的jQuery对象。所以你可以这样做

var image = $("#myImage").attr("alt", "The Logo");
image = image.css("logoImage");

但这样做要容易得多

$("#myImage").attr("alt", "The Logo").css("logoImage");

因为你删除了中间步骤。

值得坚持下去,查看Getting Started with jQuery教程。

答案 2 :(得分:0)

你会发现这样的文件是值得怀疑的。

只需用适当的选择器替换链接的呼叫。

$('#myId').call(blah)
          .chain(blah)
          .chain(blah)

var $obj = $('#myId');
$obj.call(blah);
$obj.chain(blah);
...

答案 3 :(得分:0)

链接只是将一个表达式的结果用作另一个表达式的输入。它们很容易被扁平化以分开陈述。

如果方法返回相同的集合,您可以像任何其他方法一样调用该方法:

var links = $('a.popup');
var handler = function(e){ window.open(this.href,this.target); e.preventDefault(); };
links.click(handler);
links.css('color', 'red');

如果方法返回不同的集合,则必须将返回值分配给新变量,或者返回替换当前集合的同一变量:

var links = $('a.popup');
links = links.filter('[target=_blank]');
links.css('font-weight', 'bold');