JQuery: эффект mousedown (в то время как щелчок левой кнопкой удерживается),

Я использую простую функцию, которая перечисляет все вхождения, выбирает позицию n-го места и использует ее для разделения исходной строки на две подстроки. Затем он заменяет первое вхождение во второй подстроке и присоединяет подстроки обратно к новой строке:

import re

def replacenth(string, sub, wanted, n)
    where = [m.start() for m in re.finditer(sub, string)][n-1]
    before = string[:where]
    after = string[where:]
    after = after.replace(sub, wanted, 1)
    newString = before + after
    print newString

Для этих переменных:

string = 'ababababababababab'
sub = 'ab'
wanted = 'CD'
n = 5

выходов:

ababababCDabababab

Примечания:

Переменная where на самом деле представляет собой список позиций совпадений, в которых вы выбираете n-й. Но индекс элемента списка начинается с 0 обычно, а не с 1. Поэтому существует индекс n-1, а n - фактическая n-я подстрока. Мой пример находит 5-ю строку. Если вы используете индекс n и хотите найти 5-ю позицию, вам нужно n быть 4.

Это должно быть самым простым способом, но, возможно, это не самый путинский путь, потому что конструкция переменной where требует импорта re библиотека. Возможно, кто-то найдет еще более питоновский путь.

Источники и некоторые ссылки дополнительно:

blockquote>

27
задан Zebra 20 October 2010 в 11:04
поделиться

2 ответа

Небольшая модификация первоначального ответа:

$('#Clicker').mousedown(function () {
    //do something here
    timeout = setInterval(function () {
        //do same thing here again
    }, 500);

    return false;
});
$('#Clicker').mouseup(function () {
    clearInterval(timeout);
    return false;
});
$('#Clicker').mouseout(function () {
    clearInterval(timeout);
    return false;
});

При событии mouseout на Clicker оно останавливается, когда вы перемещаете мышь из области щелчка.

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

18
ответ дан Tarjei Knutsen 28 November 2019 в 04:28
поделиться
$.fn.click2=function(cb,interval){
   var timeout;
   if(!interval) interval=100;
   $(this).mousedown(function () { 
      var target=this;
       timeout = setInterval(function(){
          cb.apply(target);
       }, interval);

    return false;
   }).mouseup(function () {
      clearInterval(timeout);
      return false;
   }).mouseout(function () {
      clearInterval(timeout);
      return false;
   });
}
1
ответ дан MajidTaheri 28 November 2019 в 04:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: