widget jquery _trigger y enlazar

Estoy tratando de hacer que mis widgets jquery se acoplen libremente, pero el uso de _trigger y bind no funciona como se esperaba.

Aquí está mi widget (usando http://msdn.microsoft.com/en-us/library/hh404085 como referencia):

(function ($, undefined) {
  $.widget('qs.tagger', {
    _create: function () {
      var that = this,
        name = this.name;

      that.element.bind('mouseenter', function (event) {
        that._trigger('activated', event, {name: 'hello'});
        console.log('mouseenter');
      });
    },
    destroy: function () {
      this._destroy();
    }
  });
}(jQuery));

llamarlo se parece a esto

$('#results').tagger();

y esta es la instanciación y enlace:

  $('#results').tagger();

  $('#search-form').bind('taggeractivated', function (event, data) {
    console.log('world');
  });

cuando reviso el archivo console.log, veo que se activa el evento de entrada del mouse, pero nunca veo que se llame al evento de vinculación.

preguntado el 27 de julio de 12 a las 21:07

3 Respuestas

Esta no es la forma en que funciona el método _trigger de la fábrica de widgets. Si quieres usar el _trigger tienes que hacerlo así:

$('#results').tagger({
     activated: function (event, data) {

          console.log('hello activated world');
     }
});

Respondido 30 Jul 15, 18:07

Sin conocer su estructura HTML, estoy dando una puñalada en la oscuridad y diciendo el $('#results') El elemento no es descendiente del $('#search-form') elemento. Los eventos lanzados por el complemento solo pueden ser capturados por el objeto en el que se creó la instancia del complemento o los ancestros. Si desea más ayuda, proporcione el HTML, o incluso mejor, proporcione HTML y JavaScript a través de jsfiddle.net.

Respondido 27 Jul 12, 23:07

¿Alguna forma de capturar el evento fuera del propio complemento? Y tienes razón, #resultados no es un descendiente de #búsqueda-forma - cristian nissen

tratan

$('#results').tagger();
$('#search-form').on('activated', function (event, data) {console.log('world');});

Respondido 28 Oct 14, 13:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.