Событие jQuery bind and unbind с параметрами

Лисп: хвостовая рекурсия

(defun factorial(x)
  (labels((f (x acc)
             (if (> x 1)
                 (f (1- x)(* x acc))
                 acc)))
         (f x 1)))
8
задан fejese 10 January 2015 в 14:05
поделиться

5 ответов

Чтобы привязать функцию, которая принимает параметры, используйте анонимную функцию, которая будет закрывать параметры.

jQuery(function($) {
    var param = 'text';
    $('#textbox').click(function() {
        EventWithParam(param);
        // or just use it without calling out to another function
        $(this).text(param);
    });
});

В вашем примере выполняется функция EventWithParam , а затем попытка привязки к результату вызова этой функции.

Вызов unbind без указания функции отвяжет все обработчики для указанного типа события (включая анонимную функцию). Если вы хотите специально отвязать эту функцию, вам нужно указать ей имя, например:

jQuery(function($) {
    var param = 'text',
        clickCallback = function() {
            EventWithParam(param);
            // or just use it without calling out to another function
            $(this).text(param);
        };
    $('#textbox').click(clickCallback);
});
10
ответ дан 5 December 2019 в 06:23
поделиться

Причина в том, что EventWithParam вызывается как функция прямо здесь, в ваша привязка. Другими словами, вы привязываете событие щелчка к результату вызова EventWithParam ('param') . Это должно сработать:

jQuery('#textbox').bind('click',function(){EventWithParam('param')});

Теперь ты » Мы связали четность с функцией, которая при срабатывании события вызовет EventWithParam ('param')

1
ответ дан 5 December 2019 в 06:23
поделиться
jQuery(function() {
    jQuery('#textbox').click(function() {
        EventWithParam(param1,param2,...,paramN);
    });
});

function EventWithParam(param1,param2,...,paramN) {
    doSomething...;
    ...;
}
0
ответ дан 5 December 2019 в 06:23
поделиться

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

из JQuery Documentation: Bind

function handler(event) {
    alert(event.data.foo);
}  
$("p").bind("click", {foo: "bar"}, handler)
11
ответ дан 5 December 2019 в 06:23
поделиться

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

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

private void MyForm_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] files = e.Data.GetData(DataFormats.FileDrop) as string[];
        if (files != null)
        {
            // Do additional checks here if needed, like check extensions
            e.Effect = DragDropEffects.Copy;
            return;
        }
    }

    e.Effect = DragDropEffects.None;
}

, а затем в обработчике DRAPDROP, я бы просто сохранил имена файлов, а затем активируйте таймер. Это позволяет DRAGROP возвращать немедленно, так что другое приложение (в вашем примере, Windows Explorer) не зависает, пока вы выполняете какую-либо обработку в файле, который может занять время. Источник сопротивления не вернет до завершения DrackDrop.

private void MyForm_DragDrop(object sender, DragEventArgs e)
{
    string[] files = e.Data.GetData(DataFormats.FileDrop) as string[];
    if (files != null)
    {
        _filesToProcess.Text = files[0];  // Assuming this is declared at the Form level

        // Schedule a timer to fire in a few miliseconds as a simple asynchronous method
        _DragDropTimer.Interval = 50;
        _DragDropTimer.Enabled = true;
        _DragDropTimer.Start();
        Activate();  // Activates the form and gives it focus
    }
}
-121--3418721-

BDUKES именно справа. Я добавляю свой ответ, так как я недавно нашел что-то интересное, связанное с функцией BIND / UBIND jQuery, а также анонимных функциях, его пространствам имени событий. Ранее показано выше событие BING, называется следующим образом.

jQuery («# TextBox»). Bind («Щелкните», функция () {EventWithParam («Param»)});

Чтобы уничтожить это даже пользователь должен позвонить ... jQuery («# TextBox»). Развинтируйте («щелкнуть»);

в действительности, удаляя все события OnClick.

Теперь поставляется в зонах имени jQuery. Если у вас есть анонимная функция, которую вы хотите прикрепить к событию CLICK, а позже Unibind делают это следующим образом.

jQuery («# TextBox»). Bind («click.yournamepace», функция () {EventWithParam («param»)});

Затем, чтобы разминировать простой вызов функции «Развиты» следующим образом.

jQuery («# TextBox»). Unbind ('click.yournamespace');

остальные события onclick останутся.

4
ответ дан 5 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

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