2011-01-12 10 views
0

Ich habe diese scirpt geschrieben:Benutzerdefinierte jQuery-Funktionen und Argumente

$(document).ready(function() { 
    $('#tb1 li').hover(function() { 
    var head = $(this).attr("title"); 
    var image = $(this).find("a").attr("rel"); 
    $('.aCnt img').attr("src", image); 
    $('.aCnt span').html(head); 

    }); 
    $('#tb1 li').eq(0).hover(); 
}); 

ich dieses Skript global

function interActive(myID, myClass){ 
    ID = '#' + myID; 
    cls = '.' + myClass; 
    $('ID li').hover(function() { 
    var head = $(this).attr("title"); 
    var image = $(this).find("a").attr("rel"); 
    $('cls img').attr("src", image); 
    $('cls span').html(head); 

    }); 
    $('ID li').eq(0).hover(); 
} 

Ich weiß machen wollen, dass jQuery-Funktion nicht ähnlich wie zum Beispiel PHP-Funktionen. Die interActive Funktionen funktionieren nicht in jQuery. Wie kann ich diese Funktion für jQuery ändern? Vielen Dank im Voraus.

Antwort

2

Die Variablen ID und cls werden buchstäblich als Strings behandelt, wenn sie in Anführungszeichen gesetzt werden. Sie müssen sie wie folgt verketten: cls + ' img'.

function interActive(myID, myClass){ 
    var ID = '#' + myID; 
    var cls = '.' + myClass; 
    $(ID + ' li').hover(function() { 
     var head = $(this).attr("title"); 
     var image = $(this).find("a").attr("rel"); 
     $(cls + ' img').attr("src", image); 
     $(cls + ' span').html(head); 

    }); 
    $(ID + 'li').eq(0).hover(); 
} 

Sie auch ein jQuery-Plugin zu schreiben für diese prüfen kann, wie zum Beispiel:

$.fn.interActive = function (target) { 
    this.find('li').hover(function() { 
     var head = $(this).attr('title'); 
     var image = $(this).find('a').attr('rel'); 
     $(target).find('img').attr('src', image); 
     $(target).find('span').html(head); 
    }).eq(0).hover(); 
}; 

, die wie folgt verwendet werden kann:

$("#someID").interActive(".someClass"); 
+0

Vielen Dank für Hilfe. Bitte sehen Sie hier: http://jsfiddle.net/EkKSS/1/. Es gibt keine Änderung in Hover. – TheNone

+0

Sie haben die erste Methode verwendet, die kein jQuery-Plugin erstellt, also rufen Sie einfach mit 'interActive (..., ...)' auf. Sie müssen auch alle Zeichenfolgen (keine Variablen, die Zeichenfolgen enthalten) in Anführungszeichen setzen. Siehe aktualisierte Geige: http://jsfiddle.net/gNFA3/ –

+0

Danke für die großartige Plugin-Methode. – TheNone

Verwandte Themen