2011-07-22 118 views
1

我是jQuery的新手,我無法弄清楚我的問題的解決方案。 我在我網站上的一些SVG對象上使用jQuery easytooltip。一切工作正常,但我需要改變運行時的工具提示的一些屬性。我的document.ready功能是這樣的:關於屬性操作的jquery問題

$(document).ready(function() { 
    $("polygon").easyTooltip({ 
     tooltipId: "easyTooltip2", 
     content: 'hello' 
    }); 
}); 

我希望能夠,(鼠標懸停在我的多邊形)讀出從我的多邊形屬性,然後傳送到內容屬性,它表明,當工具提示正在顯示...如何訪問內容值以在運行時更改它?

我的插件代碼現在看起來是這樣的:

(function ($) { 

$.fn.content = function (_content) { 

    $(this).easyToolTip({ content: _content }) 
}; 

$.fn.easyTooltip = function (options) { 

    // default configuration properties 
    var defaults = { 
     xOffset: 10, 
     yOffset: 25, 
     tooltipId: "easyTooltip", 
     clickRemove: false, 
     content: "", 
     useElement: "" 
    }; 


    var options = $.extend(defaults, options); 
    var content; 


    this.each(function() { 
     var title = $(this).attr("title"); 
     $(this).hover(function (e) { 
      content = (options.content != "") ? options.content : title; 
      content = (options.useElement != "") ? $("#" + options.useElement).html() : content; 
      $(this).attr("title", ""); 
      if (content != "" && content != undefined) { 
       $("body").append("<div id='" + options.tooltipId + "'>" + content + "</div>"); 
       $("#" + options.tooltipId) 
        .css("position", "absolute") 
        .css("top", (e.pageY - options.yOffset) + "px") 
        .css("left", (e.pageX + options.xOffset) + "px") 
        .css("display", "none") 
        .fadeIn("slow") 
      } 
     }, 
     function() { 
      $("#" + options.tooltipId).remove(); 
      $(this).attr("title", title); 
     }); 
     $(this).mousemove(function (e) { 
      $("#" + options.tooltipId) 
       .css("top", (e.pageY - options.yOffset) + "px") 
       .css("left", (e.pageX + options.xOffset) + "px") 
     }); 
     if (options.clickRemove) { 
      $(this).mousedown(function (e) { 
       $("#" + options.tooltipId).remove(); 
       $(this).attr("title", title); 
      }); 
     } 
    }); 

}; 

})(jQuery); 

回答

0

退房.live()

$("polygon").live("mouseover", function() { 

    $("polygon").easyTooltip({ 
      tooltipId: "easyTooltip2", 
      content: 'hello' 
    }); 

}); 

More info

+0

謝謝你的興趣。我已經在使用JavaScript編寫的onmousover函數了。在這個函數中,我想我必須添加如下內容:$(「easyTooltip2」)。content =「changedContent」;這是否有可能? – john

+0

@Paperjam你應該使用鼠標懸停,而不是onmouseover –

+0

@john這是可能的。你可以通過這樣做來創建你自己的jQuery插件(http://docs.jquery.com/Plugins/Authoring):'$ .fn.content = function(_content){$(this).easyToolTip({content: _content})}'。我沒有機會測試這個,但我認爲這可能會讓你朝正確的方向發展。 –

0

你可以這樣做:

$("polygon").mouseover(function() { 

    $("polygon").easyTooltip({ 
      tooltipId: "easyTooltip2", 
      content: 'changedContent' 
    }); 

}); 

這將重新創建工具提示:一個更好的選擇是隻修改的內容,我會考慮的API,看它是否是可能的。 (這是不可能的,我認爲插件提供的API,重新創建工具提示)