Найти и заменить jquery - PullRequest
       37

Найти и заменить jquery

6 голосов
/ 24 октября 2008

У меня есть этот код, чтобы дать мне ролловер на кнопках отправки, и я пытаюсь сделать его более общим:

$('.rollover').hover(
            function(){ // Change the input image's source when we "roll on"
                srcPath = $(this).attr("src");
                            srcPathOver = ???????
                /*need to manipulate srcPath to change from
                img/content/go-button.gif
                into 
                img/content/go-button-over.gif
                */
                $(this).attr({ src : srcPathOver});
            },
            function(){ // Change the input image's source back to the default on "roll off"
                $(this).attr({ src : srcPath});
            }
     );

Две вещи действительно,

Я хочу узнать, как манипулировать переменной srcPath, чтобы добавить текст '-over' в имя файла gif, чтобы получить новое изображение для ролловера. Кто-нибудь может предложить способ сделать это?

Кроме того, кто-то может сказать мне, если этот код вообще можно улучшить? Я немного новичок в jQuery и спрашиваю себя, можно ли улучшить синтаксис.

Большое спасибо.

Ответы [ 3 ]

13 голосов
/ 24 октября 2008
$('.rollover').hover(
            function(){ // Change the input image's source when we "roll on"
                var t = $(this);
                t.attr('src',t.attr('src').replace(/([^.]*)\.(.*)/, "$1-over.$2"));
            },
            function(){ 
                var t= $(this);
                t.attr('src',t.attr('src').replace('-over',''));
            }
     );
6 голосов
/ 24 октября 2008

Чтобы манипулировать именем файла и добавить «-over», вам просто нужно выполнить некоторые манипуляции со строками Javascript, например:

function appendOver(srcPath){
    var index = s.indexOf('.');

    var before = s.substr(0, index);
    var after = s.substr(index);

    return before + "-over" + after;
}

Это должно вернуть исходное имя файла (во всех возможных форматах) и добавить строку '-over' непосредственно перед точкой расширения.

2 голосов
/ 24 октября 2008

Вы должны быть в состоянии использовать замену регулярных выражений, чтобы изменить исходный путь. Как это:

srcPathOver = srcPath.replace(/([^.]*)\.(.*)/, "$1-over.$2");

Подробнее о регулярных выражениях JavaScript здесь

Что касается того, как вы это делаете, я бы позаботился о том, чтобы вы определили свою переменную srcPath следующим образом

var srcPath;
$('.rollover').hover(...

Приведенный выше код создает впечатление, что srcPath является глобальной переменной, а это не то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...