あなたがjQueryについて言及していないことは知っていますが、この動的なものでは、それを使用することを強くお勧めします。
その取引全体を div でラップします。
<div id="wordSelector"><spans></div>
そして、mousedown イベントを div にアタッチします。セマフォを使用して、イベントがマウスダウン中にのみ処理されるようにします。マウスアップ イベントが登録されるまで、スパンでマウスオーバー イベントをキャプチャします。
注: これらのイベントは、div の外にあるが div に入ったマウスダウン イベントが確実に処理されるようにするために、div の代わりにドキュメントに添付する必要がある場合があります。
var spansTouched = [];
var mouseDown = 0;
$("#wordSelector").mousedown( function(){
//track spans touched with a semaphore
mouseDown++;
});
$("#wordSelector").mouseup( function(){
mouseDown = 0;
//handle spansTouched and then reset it to []
});
$(".word").mouseover( function(){
if(mouseDown > 0){
spansTouched.push(this);
}
});
明らかに、ここには改善の余地があります。これは、セマフォとマウス イベントを使用する可能なアプローチを強調するためのものです。