Είναι ένας τρόπος για να γίνει ένα «scoped» add () σε jQuery εκεί;

ψήφοι
1

Η κύρια μέθοδος jQuery παίρνει ένα δεύτερο προαιρετικό επιχείρημα για να παρέχουν το πλαίσιο για την αναζήτηση. π.χ

$(.setA, ancestorOfSetsA);

Ωστόσο, η jQuery add()μέθοδος δεν δέχεται το επιχείρημα αυτό το πλαίσιο. Αυτό που προσπαθεί να επιτύχει είναι:

$(.setA, ancestorOfSetsA).add(.setB, ancestorOfSetsB);

Είμαι προσπαθεί αυτό μέσω ενός plugin που θα επιβαρύνει την add()μέθοδο, αλλά δεν μπορώ να καταλάβω πώς να συνδυάσει δύο αντικείμενα jQuery σε ένα αντικείμενο jQuery.

Θα ήθελα να βρω έναν τρόπο να κάνει μια scoped add()με jQuery, αλλά αν δεν υπάρχει, εγώ θα γράψω ένα τον εαυτό μου αν μπορώ να βρω έναν τρόπο να συγχωνευθούν με jQuery αντικείμενα.

Δημοσιεύθηκε 09/12/2008 στις 20:39
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Μπορείτε να περάσετε μια συλλογή jQuery σε addακριβώς όπως και μια σειρά επιλογής:

$(".setA", ancestorOfSetsA).add( $(".setB", ancestorOfSetsB) );

Αν θέλετε να υπερφορτώσει addτότε θα πρέπει να είστε προσεκτικοί για να στηρίξει την όλη συμπεριφορά του. Κάποιος (ένα plugin μπορεί να χρησιμοποιείτε) θα μπορούσε να γίνει αυτό:

$( selector ).add('<div>new element</div>').appendTo( somethere );

ΕΠΙΚΑΙΡΟΠΟΙΗΜΕΝΟ:

Εδώ είναι η σημερινή add λειτουργία από jQuery τροποποιηθεί για να λάβει μια παράμετρο πλαίσιο:

jQuery.fn.add = function( selector, context ) {
    return this.pushStack( jQuery.unique( jQuery.merge(
        this.get(),
        typeof selector == 'string' ?
            jQuery( selector, context ) :
            jQuery.makeArray( selector )
    )));
}
Απαντήθηκε 09/12/2008 στις 21:53
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more