0

私は jQueryUI ウィジェット ファクトリを初めて使用するので、質問するのはばかげているかもしれません。オプションを使用して ajax 呼び出しの URL を設定できる ajax ツールチップを作成したいのですが、このオプションは ajax 呼び出しを含む _mouseOver メソッドでは読み取れません。

    (function($) {
        $.widget("ui.tooltip", {
   options: {
        url: ''
    },
  _create: function() {
      alert(this.options.url); //it works
      this.element.bind({
        mouseenter: this._mouseOver
      });
    },
  _mouseOver: function() { 
      alert(this.options.url); //it dosen't works
    },
  ...

私がセットアップすると: $(".text").tooltip({url: "something" });

誰か助けてくれませんか。

4

2 に答える 2

3
(function ($) {
    $.widget("ui.tooltip", {
        self: null,
        options: {
            url: ''
        },
        _create: function () {
            self = this;
            self.element.bind({
                mouseenter: self._mouseOver
            });
        },
        _mouseOver: function () {
            alert(self.options.url); // it should work
        }
    });
})(jQuery);

_mouseOver内で「this」を使用すると、ウィジェット自体ではなく、イベント関数内の現在のオブジェクトが参照されます。任意のイベントまたはメソッドでオプションを使用できるようにするには、変数を作成してウィジェット(this)をその上に配置する必要があります。jQueryで$.each()関数を使用した場合も同じ動作が見られます。

于 2012-10-22T14:33:28.940 に答える
0

この場合、_mouseOver 関数の「この」コンテキストは要素であり、jquery ウィジェットではありません。そのため、options.url を取得できません。

このコードを最初に使用してみることができます。

_create: function() {
      alert(this.options.url); //it works
      this.element.tooltip = this;
      this.element.bind({
        mouseenter: this._mouseOver
      });
    },  
_mouseOver: function() { 
  alert(this.tooltip.options.url); //it dosen't works
},

テストされていません。

于 2012-07-16T06:02:00.717 に答える