JQuery дважды вызывает логику bind (), только при перезагрузке - PullRequest
1 голос
/ 28 августа 2011

У меня есть следующий код:

$(document).ready(function () {
      $("#Titles .item a").each(function (index, domEle) {
        // 1)
      $(this).ttip($.extend(true, {}, ttip_opts, {
                content: {
                    text: $(this).attr('title'),
                    title: {
                        text: "SomeText"
                    }
                }
            }));
       // 2)
            $(this)
                .bind("click", function (event) {
                    alert(this);
                })
                .attr('title', '');
        });
});

Когда я нажимаю «перезагрузить» на странице и нажимаю на ссылку, выдается предупреждение дважды. При последующих щелчках он появляется один раз.

Когда я комментирую утверждение № 1, оно появляется только один раз каждый раз.

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

Обновление

Я все еще получаю два клика по моему методу (теперь вызываемому из другого скрипта), даже когда я удаляю привязку к событию click. Так что каждая функция определенно выполняет логику в методе click () только при перезагрузке.

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

1 Ответ

0 голосов
/ 28 августа 2011

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

$(document).ready(function () {
      $("#Titles .item a").each(function (index, domEle) {
            // 2)
            $(this)
                .bind("click", function (event) {
                    alert(this);
                    return false;
            }).attr('title', '');

        // 1)
        $(this).ttip($.extend(true, {}, ttip_opts, {
                content: {
                    text: $(this).attr('title'),
                    title: {
                        text: "SomeText"
                    }
                }
        }));
    });
});
...