Witam ponownie. Mam kolejny kłopot :/ Napisałem taki o to kod:
$(function() {
function replaceMessageToLink() {
var message = $(this).children(".message").text();
console.log(message);
var html = findLinkInMessage(message);
console.log(html);
$(this).children(".message").empty().append(html);
a = $("ul.chat-lines li.chat-line:last:not(.admin)").attr("id");
}
function findLinkInMessage(c) {
if(c.indexOf('http://') != -1 || c.indexOf('https://') != -1 ) {
var splitResult = c.split(" ");
for(i = 0; i < splitResult.length; i++){
if(splitResult[i].indexOf('jpg') != -1 || splitResult[i].indexOf('png') != -1 || splitResult[i].indexOf('jpeg') != -1 || splitResult[i].indexOf('gif') != -1 ) {
var linkToImage = splitResult[i];
var html = '<img src="' + linkToImage + '">';
return html;
}
}
}
}
function replaceLinkToImage() {
if(typeof a === 'undefined') {
$("ul.chat-lines li.chat-line:not(.admin)").each(function() {
replaceMessageToLink();
});
} else {
$("ul.chat-lines li.chat-line#"+a+":not(.admin)").nextAll().each(function() {
replaceMessageToLink();
});
}
}
setInterval(replaceLinkToImage, 1000);
});
Problem polega na tym, że w funkcji replaceMessageToLink(); zmienna "message" zwraca "undefined". Wiem, że jest to wina $(this). Tylko nie wiem jak mam to zrobić, aby $(this) zwracało odpowiedni element, który "chwytam" w funkcji replaceLinkToImage(). Znaleźć niestety nic nie mogę. Pewnie dlatego, że nawet nie wiem czego mam szukać... Mam również pytanie, do bardziej doświadczonych użytkowników. Czy kod chociaż w minimalnym stopniu jest sensowny i czy ewentualnie można coś poprawić.
/ref