Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 获取一个元素';什么地方没有身份证?_Jquery_Jqplot - Fatal编程技术网

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");