私があなたを正しく理解していれば、あなたはあなたがクリックした行のテキストを取得したいと思うでしょう。その場合、次の例で機能します。
$("#mytextArea").on("mouseup", function(eventData) {
var lineHeight = $(this).css("line-height");
lineHeight = parseInt(lineHeight.substring(0, lineHeight.length - 2));
var line = Math.floor(eventData.offsetY / lineHeight);
alert($(this).val().split("\n")[line]);
});
デモ-textareaのクリックされた行からテキストを取得
コードは、テキストエリア内でマウスがクリックされた位置を取り、offsetY
適用されたで除算しline-height
ます。これを使用Math.floor()
すると、クリックされた行が取得され、行を。で分割するときに配列のインデックス要素として使用され"\n"
ます。
この作業を行うことに加えて、px
クリックされた行を計算できるように、行の高さを設定値に強制しました。
textarea{
font-size: 15px;
line-height: 15px;
}
編集-textareaのスクロールバー
textareaにスクロールバーがあるとすると、スクロールバーはoffsetY
値を「歪め」、現在のスクロール位置を次のように追加する必要があります。
$("#mytextArea").on("mouseup", function(eventData) {
var scrollPosition = $(this).scrollTop()
var lineHeight = $(this).css("line-height");
lineHeight = parseInt(lineHeight.substring(0, lineHeight.length - 2));
var line = Math.floor((eventData.offsetY + scrollPosition) / lineHeight);
alert($(this).val().split("\n")[line]);
});
デモ-スクロールバーを使用してテキストエリアのクリックされた行からテキストを取得
CSSを固定の高さに更新して、次のようなスクロールバーを取得しました。
textarea{
font-size: 15px;
line-height: 15px;
height: 100px;
}