Frage

Ich habe es mit dieser Situation zu tun:

  • Ich habe ein Farbanimationsskript, das auf ID abzielt (es ist nicht jQuery, sondern reine JavaScript)
  • Dann habe ich eine dynamische Liste ohne IDS: 'ul' maryphp Wurflistenelemente '/ul' '
  • Und schließlich habe ich JQuery selbst (mit dem ich mehrere IDs zu den Listenelementen hinzufügen werde. Aber ich weiß immer noch nicht wie)

Ich habe festgestellt, dass ich mit JQuery -Klassen zu den Listenelementen nicht hinzufügen konnte, da das Farb -Plugin nur nach ID sucht (es verwendet GetElementById, die keine Parallele zu Klassen haben).

Ich muss ausschließen, damit die AddClass JQ -Funktion, die bei der Arbeit leicht zu leisten wäre.

Das Skript würde nur funktionieren, wenn ich IDs in die Liste einfügen könnte, 5 gut definierte IDs, und später einige Anweisungen im externalisierten Farb-Plugin geben könnte, um sie zu beeinflussen:

<ul>
     <li><a href="" id="ontheflyone">pulled from the DB</a></li>
     <li><a href="" id="ontheflytwo">pulled from the DB</a></li>
     <li><a href="" id="ontheflythree">pulled from the DB</a></li>
     <li><a href="" id="ontheflyfour">pulled from the DB</a></li>
     <li><a href="" id="ontheflyfive">pulled from the DB</a></li>
</ul>

Dann die Anweisungen:

document.getElementById(’id’).onmouseover = function() { 'ontheflyone','text','$color1' };
document.getElementById(’id’).onmouseout = function() { 'ontheflyone','text','$color2'};

document.getElementById(’id’).onmouseover = function() { 'ontheflytwo','text','$color1' };
document.getElementById(’id’).onmouseout = function() { 'ontheflytwo','text','$color2'};

etc.

Ich könnte das JavaScript des Plugins selbst ändern, aber ich dachte, es wäre einfacher, JQuery in irgendeiner Weise IDs in meinem HTML hinzuzufügen.

Das Farb -Plugin ist ein fantastisches Stück Code von geschrieben von Michael LeigeberIch reproduziere wie folgt:

// main function to process the fade request //
function colorFade(id,element,start,end,steps,speed) {
  var startrgb,endrgb,er,eg,eb,step,rint,gint,bint,step;
  var target = document.getElementById(id);
  steps = steps || 20;
  speed = speed || 20;
  clearInterval(target.timer);
  endrgb = colorConv(end);
  er = endrgb[0];
  eg = endrgb[1];
  eb = endrgb[2];
  if(!target.r) {
    startrgb = colorConv(start);
    r = startrgb[0];
    g = startrgb[1];
    b = startrgb[2];
    target.r = r;
    target.g = g;
    target.b = b;
  }
  rint = Math.round(Math.abs(target.r-er)/steps);
  gint = Math.round(Math.abs(target.g-eg)/steps);
  bint = Math.round(Math.abs(target.b-eb)/steps);
  if(rint == 0) { rint = 1 }
  if(gint == 0) { gint = 1 }
  if(bint == 0) { bint = 1 }
  target.step = 1;
  target.timer = setInterval( function() { animateColor(id,element,steps,er,eg,eb,rint,gint,bint) }, speed);
}

// incrementally close the gap between the two colors //
function animateColor(id,element,steps,er,eg,eb,rint,gint,bint) {
  var target = document.getElementById(id);
  var color;
  if(target.step <= steps) {
    var r = target.r;
    var g = target.g;
    var b = target.b;
    if(r >= er) {
      r = r - rint;
    } else {
      r = parseInt(r) + parseInt(rint);
    }
    if(g >= eg) {
      g = g - gint;
    } else {
      g = parseInt(g) + parseInt(gint);
    }
    if(b >= eb) {
      b = b - bint;
    } else {
      b = parseInt(b) + parseInt(bint);
    }
    color = 'rgb(' + r + ',' + g + ',' + b + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
    target.r = r;
    target.g = g;
    target.b = b;
    target.step = target.step + 1;
  } else {
    clearInterval(target.timer);
    color = 'rgb(' + er + ',' + eg + ',' + eb + ')';
    if(element == 'background') {
      target.style.backgroundColor = color;
    } else if(element == 'border') {
      target.style.borderColor = color;
    } else {
      target.style.color = color;
    }
  }
}

// convert the color to rgb from hex //
function colorConv(color) {
  var rgb = [parseInt(color.substring(0,2),16), 
    parseInt(color.substring(2,4),16), 
    parseInt(color.substring(4,6),16)];
  return rgb;
}

Also, eine Million Danke, wenn mir jemand sagen kann, wie ich diese IDs im laufenden Fliegen hinzufügt, oder vielleicht, wie man das JavaScript in Target -Klassen ändert.

Danke vielmals,

Jan

War es hilfreich?

Lösung

Sie haben also ein gewöhnliches <ul></ul> und wollen jeden geben <li> darin eine eindeutige ID? Probieren Sie den Befehl jQuery aus "jeder":

$("li").each(function(index, element){$(element).attr("id", index);});

Dies wird alle überschreiten <li> Elemente und zuweisen Sie jedem Element seinen nummerischen Index (im Array der Elemente, das JQuery gefunden hat) als "ID".

Andere Tipps

Wenn Sie JQuery verwenden, können Sie ein Element per Klasse mit einer solchen Syntax erhalten (vorausgesetzt, die CSS -Klasse heißt "ClassName":

$(".className").mouseover(function(){
  alert("something");
});

Um dasselbe mit einer ID zu tun, würden Sie dies in JQuery tun:

$("#idVal").mouseover(function(){
  alert("something");
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top