2009-05-21 36 views
9

Tôi chỉ có biểu hiện jQuery ngày hôm trước và vẫn cảm thấy như có rất nhiều sức mạnh trong đó mà tôi không sử dụng.Tính năng yêu thích của jQuery của bạn là gì?

Vì vậy, điều đó đã nói, tính năng yêu thích của bạn về jQuery giúp bạn tiết kiệm thời gian và/hoặc làm cho các ứng dụng phía máy khách của bạn mát mẻ hơn hoặc mạnh mẽ hơn?

+0

@JerSchneid - nó trở thành một cái gì đó mà folks muốn thấy khi có thực sự không phải là một câu trả lời đúng hay là chủ quan ... – RSolberg

+1

Các phiếu gần phải là vì câu hỏi này không có câu trả lời duy nhất ("không phải là một câu hỏi thực"), nó chủ quan ("chủ quan và tranh luận") và nó không được gắn cờ là wiki cộng đồng. Nhưng bây giờ nó đã được thiết lập như vậy và nó giống như một "cuộc tranh luận", vì vậy không nên có thêm phiếu bầu :) – Seb

+1

Trên thực tế, cả ba phiếu đóng là 'Không lập trình liên quan' –

Trả lời

27

Tính năng ưa thích của jQuery là cách nó giúp JavaScript chuyển từ ngôn ngữ bị ghét sang ngôn ngữ gợi cảm gần như qua đêm.

+1

Vâng ... thực sự ... đó không phải là một tính năng, nhưng tôi đồng ý điều đó thật tuyệt. – Seb

+2

Tôi gọi nhảm nhí. Đó không phải là thư viện đã thay đổi ... Đó là nguyên mẫu. Và Không Tôi không phải là một fan hâm mộ nguyên mẫu như tôi sử dụng jQuery - Tôi chỉ tin rằng John Resig có được tất cả các tín dụng mà một số nhà phát triển khác xứng đáng quá. –

+2

@Dmitri Thế còn dojo? Mootools? jQuery thực sự là thư viện bùng nổ vào dòng chính, ít nhất là từ những gì tôi có thể nói. –

7

Chaining! Chuỗi jQuery khổng lồ thật tuyệt vời. Đôi khi tôi không thể dừng lại. Nó cảm thấy gần giống như làm tất cả mọi thứ trong một dòng (bạn muốn, không phủ nhận nó).

this.lasso = $('<div/>') 
    .css({ position: 'absolute', overflow: 'hidden' }) 
    .addClass('ui-crop-lasso') 
    .hide() 
    .appendTo('body') 
    .resizable({ 
     handles: 'all', 
     start: setLasso, 
     stop: setLasso, 
     resize: setLasso, 
     minHeight: 50, 
     minWidth: 50 
    }) 
    .draggable({ 
     containment: el, 
     cursorAt: 'move', 
     drag: setLasso 
    }); 

Hãy dùng thử, bạn sẽ không bị mất thời gian.

+2

Không có nghĩa là mã HUGE tuyệt vời. – Seb

+3

Mã lớn? Đó là một dòng JQuery taht làm cho một cái gì đó có thể thay đổi kích cỡ, có thể kéo được, cho nó một lớp và các kiểu mã hoá cứng và chèn nó vào DOM. Mặc dù điều này có thể không phải lúc nào cũng là cách tiếp cận tốt nhất, nhưng nó cực kỳ linh hoạt. – Soviut

+1

@Seb điều về jQuery chuỗi là nó có thể đọc được và thẳng về phía trước (khi được sử dụng đúng). – jskulski

3

Cách đối tượng jQuery hoạt động bất kể không có gì, một hoặc nhiều phần tử DOM trong đó.

Ngoài ra, đá xử lý sự kiện. Có thể chỉ trả lại sai về các sự kiện nhấp chuột, ví dụ: đá.

+1

điều "trả về false" cũng là một tính năng vani javascript, bạn biết đấy. hãy thử điều này: .. nickf

+1

+1, tôi nghĩ bạn muốn nói 'lặp lại tiềm ẩn' ở điểm đầu tiên của bạn, bạn là người duy nhất đã chỉ ra. Tính năng yêu thích của tôi cho đến nay. – karim79

+0

@nickf: khi hooking sự kiện chỉ với javascript, mặc dù, nó không phải là dễ dàng. Hãy xem ví dụ như thế nàonguyên mẫu làm điều đó, bạn phải vượt qua giả như một đối số hoặc một cái gì đó như thế. –

6

Hệ thống plugin không thể tin được. Bạn về mặt kỹ thuật có thể là, và vẫn là một người mới hoàn thành của JQuery và vẫn khai thác tối đa, nếu không phải tất cả, sức mạnh của nó thông qua việc áp dụng các plugin. Điều này làm cho nó rất phổ biến với các nghệ sĩ và những người không lập trình, chỉ cần tìm thêm một chú giải công cụ, hộp thoại phương thức, hộp đèn, menu thả xuống, v.v.

+0

Giống như một chiếc Ferrari mới. Nó cho phép bạn đi vô cùng nhanh chóng, ngay cho đến khi bạn đập vào một bức tường ở 140mph bởi vì bạn không biết làm thế nào để biến –

+0

Tôi đồng ý, nhưng đó có thể là trường hợp với bất kỳ ngôn ngữ hoặc công cụ mặc dù. Tôi đã tìm thấy nó hữu ích nhất cho người mới "người chỉ muốn một lightbox" và không muốn phải học rất nhiều javascript để thực hiện nó. JQuery có sức hấp dẫn rất lớn đối với những người không phải là lập trình viên và nghệ sĩ vì lý do chính xác này. – Soviut

+1

Tôi cũng tìm thấy nó khá pithy rằng câu trả lời của tôi đã được downvoted hai lần. Chỉ vì bổ sung có thể cung cấp cho các coder nghiệp dư đủ dây để treo mình với, nó mang lại cho các cựu chiến binh dày dạn một bộ công cụ rất mạnh mẽ. – Soviut

1

Không chính xác tính năng này nhưng số lượng plug-in đã viết và thông tin cộng đồng làm thế nào để sử dụng jQuery chắc chắn là một tiền thưởng. Nếu không, bộ chọn cùng với hệ thống trình cắm thêm.

2

Là người mới tham gia jQuery, nó phải là plugin jQuery UI và chủ đề mọi người đã thiết kế để đi kèm với nó. ThemeRoller cho phép bạn nhanh chóng điều chỉnh các chủ đề và chơi các kịch bản "nếu như" với ứng dụng của bạn khi nó được hiển thị trong Firefox. Tôi đã có thể cải thiện rất nhiều một ứng dụng web thông qua việc sử dụng các tab, thanh trượt accordion, datepickers, và các cảnh báo chỉ trong một hoặc hai ngày bắt đầu từ không có kiến ​​thức về jQuery cả.

Các nhà phát triển web có kinh nghiệm khác sẽ thích triết lý của jQuery về "JavaScript không phô trương", tận dụng nghiêm ngặt XHTML và CSS, bộ chọn và chuỗi.

17

Tạo một phần tử HTML và giữ một tài liệu tham khảo:

var newDiv = $('<div></div>'); 
newDiv.attr("id","myNewDiv").appendTo("body"); 
//Now whenever I want to append the new div I created, 
//I can just reference it from the 'newDiv' variable 

Kiểm tra nếu một yếu tố tồn tại:

if ($("#someDiv").length) { 
    //it exists... 
} 

Viết selectors của riêng bạn:

$.extend($.expr[':'], { 
    over100pixels: function(a) { 
     return $(a).height() > 100; 
    } 
}); 

$('.box:over100pixels').click(function() { 
    alert('The element you clicked is over 100 pixels high'); 
}); 
+1

viết bộ chọn của riêng bạn? Đó là khá gọn gàng. – Andrew

12

Không phải lo lắng (nhiều) về khả năng tương thích giữa các trình duyệt khác nhau

0

Tôi thích thực tế là nó xử lý người mới và chuyên gia như nhau, ở một mức độ nhất định. Tuy nhiên, nếu bạn biết mình đang làm gì, bạn thực sự có thể làm cho ứng dụng tỏa sáng trong mọi khía cạnh.Những thứ như tải lười, tách mã và tạo khuôn mẫu có thể được thực hiện với jQuery. Nó được thiết kế như một công cụ DOM, nhưng có thể dễ dàng thích ứng với các không gian tên và hoạt động như một khung công tác toàn diện.

Tóm lại, tôi nghĩ tính năng tốt nhất của jQuery là nó được thiết kế từ mọi góc độ với ý tưởng về sự đơn giản trong tâm trí. Câu trả lời đơn giản nhất thường là câu trả lời hay nhất.

2

Phần lớn những thứ đòi hỏi nhiều thử nghiệm và tinh chỉnh trình duyệt chéo mà tôi không thể tự viết là đáng tin cậy và thử nghiệm rộng rãi như cộng đồng jQuery. Điều này bao gồm:

  • $ (tài liệu) .ready (...). Nhìn vào việc thực hiện chức năng này. Có rất nhiều câu lệnh if-else kiểm tra các tính năng trình duyệt khác nhau.

  • Vị trí và phương pháp thứ nguyên: $ (...). Offset(), $ (...). Position(), $ (...). Width(), $ (...). innerWidth() vv Một lần nữa, cùng một câu chuyện ở đây. Ngoài ra, chúng hoạt động đáng tin cậy (hoặc tôi cho rằng đáng tin cậy hơn là tôi có thể tự mình đạt được) cho các trường hợp đặc biệt như cửa sổ và tài liệu.

  • $ (...). Animate(). Khả năng tạo hiệu ứng các yếu tố dựa trên bất kỳ kiểu CSS (hợp lý) nào. Cũng là chuỗi hoạt ảnh và $ (...). Stop(). API rất thông thạo.

  • Trình xử lý sự kiện. Đây là thứ mà mọi thư viện JavaScript đều có, và nó không phải là thứ mà người ta không thể tự thực hiện được, nhưng thật tuyệt khi có.

Ngoài ra còn có một số tính năng ít được yêu thích hơn. Một trong số đó là chuỗi chức năng mà dường như là kiểu lập trình jQuery bán chính thức. Nó có thể ấn tượng ngay từ cái nhìn đầu tiên, nhưng nhìn chung, nó không phải là bất cứ điều gì bạn không thể làm bằng cách sử dụng các biến và các câu lệnh riêng biệt và cuối cùng, theo ý kiến ​​của tôi, nó dẫn đến một mã ít đọc được hơn.

Một điều nhỏ mà tôi thích ít hơn là sự háo hức của việc sử dụng các bao đóng và các chức năng ẩn danh lồng nhau sâu sắc. Có thể khó đọc mã như vậy sau một tuần. Nó có thể không ngay lập tức rõ ràng nơi một số biến đến từ và phạm vi chức năng là gì. Hãy thử sẵn sàng một số nguồn jQuery phức tạp hơn để xem ý tôi là gì.

Mặc dù, một trong những điểm bán hàng của jQuery là bộ chọn, tôi thấy rằng tôi không cần chúng thường xuyên, và nếu tôi cần bất kỳ, tôi thường nhận được bằng những cái cơ bản.

Cuối cùng, thao tác jQuery DOM có một số tiện ích hữu ích, nhưng nhìn chung, tôi nghĩ người ta có thể đạt được điều tương tự với mã nhiều hơn một chút (mặc dù tẻ nhạt). Tôi biết tôi rất có khả năng quá đơn giản, nhưng có vẻ như không có một số vấn đề nghiêm trọng về trình duyệt chéo.

+0

với việc sử dụng thụt lề thích hợp, tôi thấy rằng kiểu chuỗi mã hóa có thể đọc được nhiều hơn mã thông thường. – nickf

1

Selectors với sự hỗ trợ cho CSS 1-3XPath kết hợp và bộ chọn tùy chỉnh của riêng bạn!

// "odd" numbered rows in a table with class "orders" 
jQuery('table.orders tr:odd') 

// All external links (links that start with http://) 
jQuery('a[@href^="http://"]') 
+3

ví dụ thứ hai đó không được chấp nhận nữa (hoặc bị loại bỏ hoàn toàn?) Kể từ phiên bản 1.2. jQuery ('a [href^= "http: //"]') là cách chính xác ngay bây giờ (kiểu CSS, thay vì XPath). – nickf

4

Tôi thích khía cạnh của jQuery trong việc xóa trình xử lý sự kiện khỏi HTML để tách nội dung khỏi hành vi.Thay vì viết

<p class="active" onclick="myFunction()">foo</p> 

nhiều lần trên một trang web, tôi có thể viết những dòng này thay vì:

<p class="active">foo</p> 

và viết những dòng này một lần bên trong thẻ script của tôi:

$(".active").click(function(){ ... }); 

Tại sao tôi thích điều này tốt hơn? Vì jQuery tách nội dung khỏi chức năng giống như cách CSS phân tách nội dung khỏi kiểu. Và như Jan Zich và những người khác đề cập đến, jQuery tạo ra rất nhiều chức năng đó rất dễ dàng để lập trình cho bất kỳ trình duyệt nào, vì vậy ví dụ hoạt ảnh trở nên dễ dàng khi bạn muốn mô phỏng các tab hiển thị/ẩn các div trên một trang cho người dùng.

2

Regex trong bộ chọn (kể từ khi tôi sử dụng ASP.Net và các điều khiển có vô lý, ID trả lại.)

Để có được điều này trong jQuery:

<asp:TextBox ID="txtTest" runat="server" /> 

Tôi chỉ làm điều này:

$("input[id$='txtTest']") 

Điều đó đã khiến tôi thay đổi quan điểm của mình về việc thực hiện các công cụ phía khách hàng trên các trang web.

+2

Tôi liên tục bị bối rối bởi bạn ASP.Net guys và html tạo ra của bạn. – nickf

+0

Đó là cách duy nhất mà động cơ có thể đối phó với các điều khiển lồng nhau và không có gì. Tôi cho rằng nó có thể kiểm tra tất cả mọi thứ được sử dụng trong trang để xác minh thời gian dev độc đáo, nhưng nó sẽ mất rất nhiều CPU để làm điều đó. – Gromer

+2

Nhưng một trong hai cách, tôi ghét sự đánh dấu được tạo ra từ ASP.Net. Rất nhiều. – Gromer

1

Plug-in hệ thống:

((function($){ 
    $.fn.plugin = function(){ 
     return this.each(function(){ 
      //code here 
     }); 
    } 
})(jQuery) 

Chaining:

$('.parent').children().remove().end().css('background-color', 'red'); 

khả năng tương thích trình duyệt chéo qua loạt các tính năng, ví dụ. Ajax

$.GET('url', {data: 'here'}, function(data){ /* callback */ }); 
1

giá trị tương đối trong funciton Animate:

$('div.class:hover').animate({ height: '+=10', width: '+=10', opacity: '-=.5' }) 
Các vấn đề liên quan