2011-01-12 4 views
0

Я написал эту scirpt:Пользовательские JQuery функции и аргументы

$(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(); 
}); 

Я хочу сделать этот сценарий глобальной

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(); 
} 

Я знаю, что функция JQuery не похожи на функции для примера PHP. Функции interActive не будут работать в jQuery. Как изменить эту функцию для jQuery? Спасибо заранее.

ответ

2

Идентификаторы переменных и cls обрабатываются буквально как строки, когда они помещаются внутри кавычек. Вам необходимо объединить их следующим образом: 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(); 
} 

Вы можете также рассмотреть вопрос написания плагин JQuery для этого, такие как:

$.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(); 
}; 

который может быть использован, как это:

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

Спасибо за помощь. См. Здесь: http://jsfiddle.net/EkKSS/1/. Изменений в наведении нет. – TheNone

+0

Вы использовали первый метод, который не создает плагин jQuery, поэтому вы вызываете его просто с помощью 'interActive (..., ...)'. Вам также нужно поместить любые строки (не переменные, содержащие строки) внутри кавычек. См. Обновленную скрипту: http://jsfiddle.net/gNFA3/ –

+0

Спасибо за отличный плагин. – TheNone

Смежные вопросы