Sorry für den verwirrenden Titel, aber das ist ungefähr das Beste, was ich beschreiben kann... Also ich habe ein TD-Element und wenn es doppelt geklickt wird eine Jquery Ajax-Funktion gibt eine ul aus einem PHP-Skript.
Neuer Code (Entschuldigung für so viel davon):
Hier ist der jQuery Ajax-Code:
//Create PU:
$('#DD_'+IDNum).append('<div class="popUp" id="PU_'+IDNum+'"></div>');
//ajax:
$.ajaxSetup ({
cache: false
});
var ajax_load = '<img class="loading" id="LG_'+IDNum+'" src="../images/loading.gif" />';
if(key==0)
var term = '';
else
var term = $('#TC_'+IDNum).val();
//load() functions
var loadUrl = "./ddGet.php?Ele="+element+"&Client="+ClientID+"&vendorName="+vendorName+"&id="+IDNum+"&term="+term;
$('#PU_'+IDNum+'').html(ajax_load).load(loadUrl);
Hier ist ein Ausschnitt aus dem PHP-Programm:
$result = mysql_query($query) or die(mysql_error());
$response= '<ul id="DD_UL">';
$resultArray = array();
$class = "li-odd";
$i = 1;
while($row = mysql_fetch_array($result))
{
if(!in_array($row[0], $resultArray)){
$resultArray[]=$row[0];
if(isset($row[1]))
$roW1 = ' - '.$row[1];
else
$roW1 = '';
$response .= "\n".'<li id="LI_'.$id.'_'.$i.'" class="'.$class.'">'.$row[0].$roW1.'</li>';
//selectLI(\'LI_'.$id.'_'.$i.'\')
if($class == "li-odd")
$class = "li-even";
else
$class = "li-odd";
$i++;
}
}
$response .= '</ul>';
echo $response;
Hier ist der Antworttext:
<ul id="DD_UL">
<li id="LI_1_1_1" class="li-odd">E02_02</li>
<li id="LI_1_1_2" class="li-even">E02_03</li>
<li id="LI_1_1_3" class="li-odd">E02_04</li>
<li id="LI_1_1_4" class="li-even">E02_05</li>
<li id="LI_1_1_5" class="li-odd">E02_06</li>
<li id="LI_1_1_6" class="li-even">E02_07</li>
<li id="LI_1_1_7" class="li-odd">E02_08</li>
<li id="LI_1_1_8" class="li-even">E02_09</li>
<li id="LI_1_1_9" class="li-odd">E02_10</li>
<li id="LI_1_1_10" class="li-even">E02_11</li>
<li id="LI_1_1_11" class="li-odd">E02_13</li>
<li id="LI_1_1_12" class="li-even">E02_14</li>
<li id="LI_1_1_13" class="li-odd">E02_20</li>
</ul>
Und schließlich die neue Funktion, die aufgerufen wird, nachdem das UL angezeigt wurde, und die die .live:
function selectLI(){
$('#DD_UL').live('click',function(e){
var id = e.target
id = $(id).attr('id');
var IDNum = id.substr(3);
IDNum = IDNum.substring(0,IDNum.lastIndexOf("_"));
var newVal = $('#'+id).html();
if(newVal.indexOf(" - ")>0)
newVal = newVal.substring(0, newVal.indexOf(" - "));
$('#TC_'+IDNum).val(newVal);
});
}
Nicht mehr so einfach, was? Nun, zuerst bemerkte ich, dass in Chrome die onclick würde nur funktionieren, wenn es wie einer der ersten 4 li's oder so geklickt wurde. Nach den ersten vier (oder so) würde nichts passieren. Dann bemerkte ich, dass FF 3.6 dasselbe tat. Ich überprüfte den IE (obwohl die Seite nicht für den IE gedacht ist) und es funktionierte. Schließlich funktioniert auch FF 4 einwandfrei.
Ich sage "oder so", denn manchmal sind es die ersten 4,5,6,7... Manchmal scheint es ein Muster zu geben, aber ich kann es nicht herausfinden. Ich würde mehr Code posten, aber es gibt eine Menge davon und ich sehe nicht den Sinn, da das Problem im Grunde mit dem obigen Antworttext auftritt.
Ich habe keine Ahnung, was ich als nächstes tun soll.