jQuery.live () в элементах селектора плагина

Хорошо, моя проблема в том, что я создал плагин jQuery, который связывает событие щелчка и наведения курсора на элементы, предоставляемые селектор. Теперь мне нужны эти события, чтобы вместо этого они были событиями ".live", после долгих поисков я нашел "решение", расположенное здесь

. Данное решение выглядит следующим образом. .

(function($) {
  $.fn.liveBindTest = function() {
    return this.each(function() {
      $(this).click(function(){
        console.log('click');
        return false;
      });
    });
  };
})(jQuery);

$('a').live('click', function(){ $(this).liveBindTest(); });

Хотя это не имеет смысла, поскольку тогда плагин не будет связывать щелчок в реальном времени с предоставленными «селекторами». С другой стороны, он «привяжет» событие щелчка к элементам селектора. (В данном случае это теги привязки, а не набор селекторов, динамически предоставляемый разработчиком)

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

A. Необходимо вручную привязать каждое живое событие, необходимое для ПЛАГИНА, до того, как они фактически запустят плагин. Что-то вроде этого ..

$('*:not(.complicatedSelectorHere)').live('click', function(){
    $(this).liveBindTest();
});

или

B. Им нужно будет зайти в файл jQuery.plugin.js, перейдите в конец кода и измените там живые события. Это был бы уродливый способ делать что-то, и вообще не менять переносимость, что также необходимо, переносимость.

Итак, мой последний вопрос, чтобы убедиться, что это понятно всем…

Вопрос: Как связать событие LIVE с ВСЕМИ СЕЛЕКТОРАМИ , предоставленными плагину?

Не предоставляйте очевидное решение ниже, так как оно не работает ...

(function($) {
  $.fn.liveBindTest = function() {
    return this.each(function() {
      $(this).live('click', function(){
        console.log('live clicked');
        return false;
      });
    });
  };
})(jQuery);

5
задан Community 23 May 2017 в 11:52
поделиться