Лучший ответ, который я мог придумать, это использовать регулярное выражение, чтобы выбрать каждое слово в div и окружить его тегами <span>
, для которых определены onmouseover
события.
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
var text = $("#wordHoverable").html().trim();
var newText = "";
var wordRegex = /\w*/; //Selects 'word characters' (alpha-numeric)
var nonWordRegex = /\W*/; //Selects all other characters
var foundWord = text.match(wordRegex);
while (foundWord != "") {
newText += "<span onmouseover=\"hoverFunc('" + foundWord + "');\">" +
foundWord + "</span>";
text = text.replace(wordRegex, "");
var nonWordChars = text.match(nonWordRegex);
newText += nonWordChars;
text = text.replace(nonWordRegex, "");
foundWord = text.match(wordRegex);
}
$("#wordHoverable").html(newText);
});
function hoverFunc(text) {
//Do whatever when their mouse is over the word
$("#currentWord").html(text);
}
</script>
</head>
<body>
<div>
Current word: <span id="currentWord"></span>
</div>
<div id="wordHoverable">
Hi there everyone.
</div>
</body>
</html>
Воттот же код в jsFiddle: http://jsfiddle.net/hpvtn/1/
Это может быть не очень эффективно для запуска в больших масштабах на месте, но вы можете использовать это как своего рода «компилятор» для преобразования легко в- читать простой текст в <div>
и преобразовывать его в нужный вам интерактивный текст.
Как сказал Фил, я не думаю, что вы на самом деле можете прикреплять события к самим отдельным словам, если вы не заключите их в оберткув тегах <span>
.