Jquery 获取一个元素';什么地方没有身份证?
所以,我使用的是一个需要元素的Jquery 获取一个元素';什么地方没有身份证?,jquery,jqplot,Jquery,Jqplot,所以,我使用的是一个需要元素的id属性来绘图的愚蠢的需求 然而,我的javascript使用jQuery,它对元素进行操作,我不希望依赖于具有id的div 我能否在给定jQuery$(this)元素的情况下,为div动态生成一个id,并将该id传递给我的jqPlot函数 大概是这样的: (function($){ //jquery plugin style $.fn.myPlot = function(){ //Somehow get id for "this"
id
属性来绘图的愚蠢的需求
然而,我的javascript使用jQuery,它对元素进行操作,我不希望依赖于具有id的div
我能否在给定jQuery$(this)
元素的情况下,为div动态生成一个id
,并将该id传递给我的jqPlot函数
大概是这样的:
(function($){ //jquery plugin style
$.fn.myPlot = function(){
//Somehow get id for "this"
var generatedId = somehowCreateID(this);
jqPlot.plot( generatedId );
}
})(jQuery);
function assignID(elem, prefix) {
prefix = prefix || "autoId_";
if (elem.id) {
return (elem.id);
} else {
if (!assignID.cntr) {
assignID.cntr = 1;
}
var id = prefix + assignID.cntr++;
elem.id = id;
return(id);
}
}
jQuery.assignIDCntr = 1;
jQuery.fn.assignID = function(prefix) {
prefix = prefix || "autoId_";
return this.each(function() {
if (!this.id) {
this.id = prefix + jQuery.assignIDCntr++;
}
});
}
$(".myobjects").assignID("plot");
任何提示谢谢 您可以使用前缀至少有一个字母的计数器(符合非HTML5文档):
function generateID(element) {
var id;
do {
id = "_" + Math.floor(Math.random() * 1000000000);
} while (document.getElementById(id) != null);
element.id = id;
return id;
}
由于必须保证ID为unqiue,但不需要是随机的,因此最好只使用单调递增的ID号和alpha前缀,如下所示:
(function($){ //jquery plugin style
$.fn.myPlot = function(){
//Somehow get id for "this"
var generatedId = somehowCreateID(this);
jqPlot.plot( generatedId );
}
})(jQuery);
function assignID(elem, prefix) {
prefix = prefix || "autoId_";
if (elem.id) {
return (elem.id);
} else {
if (!assignID.cntr) {
assignID.cntr = 1;
}
var id = prefix + assignID.cntr++;
elem.id = id;
return(id);
}
}
jQuery.assignIDCntr = 1;
jQuery.fn.assignID = function(prefix) {
prefix = prefix || "autoId_";
return this.each(function() {
if (!this.id) {
this.id = prefix + jQuery.assignIDCntr++;
}
});
}
$(".myobjects").assignID("plot");
这使用函数assignID.cntr
的属性跟踪计数器,该计数器每次使用时都会增加一个计数器,这样此处分配的ID将永远不会与以前分配的ID相同
然后,只需执行以下操作,即可确保任何元素始终具有id:
assignID(elem, "plot");
如果您想要一个jQuery方法来实现这一点,那么您可以这样做:
(function($){ //jquery plugin style
$.fn.myPlot = function(){
//Somehow get id for "this"
var generatedId = somehowCreateID(this);
jqPlot.plot( generatedId );
}
})(jQuery);
function assignID(elem, prefix) {
prefix = prefix || "autoId_";
if (elem.id) {
return (elem.id);
} else {
if (!assignID.cntr) {
assignID.cntr = 1;
}
var id = prefix + assignID.cntr++;
elem.id = id;
return(id);
}
}
jQuery.assignIDCntr = 1;
jQuery.fn.assignID = function(prefix) {
prefix = prefix || "autoId_";
return this.each(function() {
if (!this.id) {
this.id = prefix + jQuery.assignIDCntr++;
}
});
}
$(".myobjects").assignID("plot");
然后你会这样使用它:
(function($){ //jquery plugin style
$.fn.myPlot = function(){
//Somehow get id for "this"
var generatedId = somehowCreateID(this);
jqPlot.plot( generatedId );
}
})(jQuery);
function assignID(elem, prefix) {
prefix = prefix || "autoId_";
if (elem.id) {
return (elem.id);
} else {
if (!assignID.cntr) {
assignID.cntr = 1;
}
var id = prefix + assignID.cntr++;
elem.id = id;
return(id);
}
}
jQuery.assignIDCntr = 1;
jQuery.fn.assignID = function(prefix) {
prefix = prefix || "autoId_";
return this.each(function() {
if (!this.id) {
this.id = prefix + jQuery.assignIDCntr++;
}
});
}
$(".myobjects").assignID("plot");