Клик не срабатывает в первый раз после перепривязки методом live () - PullRequest
1 голос
/ 30 июня 2011

Я понимаю, что это, вероятно, вопрос о нубах, но мне не повезло с другими темами, которые я нашел по этой теме.

Я изобрел обходной путь, чтобы взломатьФильтр просмотров, позволяющий скрывать и отображать товары со счетом "0".Открытый фильтр для подсчета запасов (input # edit-stock) скрыт с помощью CSS, а внутри пользовательского блока находится ссылка для управления формой и запуска запроса (с помощью ajax).Это работает отлично, но с одним исключением - после сброса формы с помощью предоставленной представлениями кнопки «сброс», toggle () не будет правильно привязываться к ссылке, и щелчок не будет срабатывать в первый раз.Отлично работает на 2-м клике.Я уверен, что решение очень простое, но я в растерянности ..

Как эффективно перепривязать toggle ()?

Извините, я не могу предоставить прямую трансляциюпример.Большое спасибо за любой ввод.

ТАМОЖЕННЫЙ БЛОК:

    <a id="toggle" href="#">exclude</a>

JQUERY:

$(document).ready(function () {        

    var include = function () { 
        $('input#edit-stock').attr('value', 0).submit();
        $('a#toggle').html('include');
    }; 

    var exclude = function () {
        $('input#edit-stock').attr('value', '').submit();
        $('a#toggle').html('exclude');
    }; 


    $('a#toggle').toggle(include, exclude);


    $('input#edit-reset').live('click', function (event) {
      $('a#toggle').unbind('toggle').toggle(include, exclude).html('exclude');
    });


});

1 Ответ

0 голосов
/ 30 июня 2011

если я правильно понял проблему, вам нужно сбросить переключатель. Почему вместо того, чтобы отвязывать переключение и повторное связывание, вы просто не имитируете щелчок, если ссылка == включить?

$(document).ready(function () {        

    var include = function () { 
        $('input#edit-stock').attr('value', 0).submit();
        $('a#toggle').html('include');
    }; 

    var exclude = function () {
        $('input#edit-stock').attr('value', '').submit();
        $('a#toggle').html('exclude');
    }; 


    $('a#toggle').toggle(include, exclude);


    $('input#edit-reset').live('click', function (event) {
        //if the link is include, click it so that it resets to exclude, else do nothing
        if ($('a#toggle').html() == 'include'){
            $('a#toggle').click();
        }
    });


});

скрипка здесь: http://jsfiddle.net/PSLBb/

(надеюсь, это то, что вы искали)

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