2016-03-19 12 views
1

So habe ich diesen Code:Ineffiziente jQuery Nutzung

$("#contact_seller .modal-content").addClass('has-error'); 
$("#contact_seller span").empty(); 
$("#contact_seller textarea").focus().after("<span>Please be more precise about what You want to ask</span>"); 

Aber WebStorm zeigt an, dass diese ineffiziente jQuery Nutzung ist. So viel wie ich gelesen habe, muss ich .find(), um den Code kürzer zu machen. So war ich thiking es so etwas wie dies gehen muss:

$("#contact_seller") 
      .find('.modal-content').addClass('has-error') 
      .find('span').empty() 
      .find('textarea').focus().after("<span>Please be more precise about what You want to ask</span>"); 

Aber obviosly dieser Code funktioniert nicht richtig (Ich gehe davon aus find() wählt jeden nächsten Punkt, aber ich will es übergeordnetes Element slect nur).

Wie soll dieser Code richtig geschrieben werden?

+0

Gerade WebStorm ignorieren und Ihren ursprünglichen Code verwenden. –

Antwort

3

Als Alternative zu end, können Sie immer ...

var container = $("#contact_seller"); 
container.find(".modal-content").addClass("has-error"); 
container.find("span").empty(); 
container.find("textarea").focus().after("<span>Please...</span>"); 
1

Ein Anruf end() fehlt. Dies sollte funktionieren:

$("#contact_seller") 
     .find('.modal-content').addClass('has-error').end() 
     .find('span').empty().end() 
     .find('textarea').focus().after("<span>Please be more precise about what You want to ask</span>"); 
1

Versuchen Sie, wie unten zu schreiben,

var elem = $("#contact_seller"); 
elem.find(".modal-content").addClass('has-error'); 
elem.find("span").empty(); 
elem.find("textarea").focus().after("<span>...</span>"); 

Sie .end() verwenden können, aber dieser Code wäre effizienter als end() wird nachschlagen ein Reverse tun, und es ist eine zusätzliche Belastung in Ihrem Kontext.