[jQuery]jQuery.tooltipの「出力エリアをずれてしまう」の原因と解決

##概要
皆さんは、**`tooltip`**をよく利用していますか？  
**`tooltip`**とは、マウスを当該イメージ画面や特定の対象に持っておけば、当該対象に関する詳細説明が表示される機能でございます。 
 
```javascript:tooltip_sample.js
const IMG_MESSAGE = 'はじめまして！イと申します。';
$('.ldh-img').tooltip({
	position: { my: "left+15 center", at: "right center" },
	content: IMG_MESSAGE,
	track: false
});
```
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/1693b809-b54e-777f-1c01-9e0d9691f2d3.png)

  
通常、[🔗jQuery.tooltip](https://jqueryui.com/tooltip/)、もしくは[🔗Bootstrap](http://getbootstrap.com/javascript/#tooltips)で、機能を導入しています。  
しかし、その後、テストや運用から以下のような**「出力エリアをずれてしまう」**の結果のため、困るかもしれません。  

```javascript:tooltip_sample.js
const TEST_CASE = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$('.ldh-img').tooltip({
	position: { my: "left+15 center", at: "right center" },
	content: TEST_CASE,
	track: false
});
```
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/df7bfbf0-7e77-2de5-c395-67bff8338b96.png)

  
ということで、こいう結果の原因と解決方法を話しさせて頂きます。

##原因
まず、いくつかのケースの結果をご覧して、どのケースで**出力エリアをずれてしまう**のか、確認しましょう。
  
```javascript:tooltip_sample.js
const TEST_CASE_1 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
const TEST_CASE_2 = '12345678901234567890123456789012345678901234567890';
const TEST_CASE_3 = 'ひらがなカタカナひらがなカタカナひらがなカタカナひらがなカタカナ';
const TEST_CASE_4 = '漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字漢字';
const TEST_CASE_5 = '한글한글한글한글한글한글한글한글한글한글한글한글한글한글한글한글한글한글';
const TEST_CASE_6 = '@#()*$(*%()!#&%)(&!#*()&*)(!#&*(&!#(*&*()!$&*(!#&%*(!#&*!#$';
const TEST_CASE_7 = '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!';
const TEST_CASE_8 = '12345678901234567890123456789012345678 9012345 67890';
const TEST_CASE_9 = '12345678901234567890123456789012345678한901234567890';

$('.ldh-img').tooltip({
	position: { my: "left+15 center", at: "right center" },
	content: TEST_CASE_9,
	track: false
});
```
**ケース①、連速英字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/f76ba039-9f85-3d5e-64d9-d0818d6a280e.png)
  
**ケース②、連速数字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/b2aaf822-8403-a840-feab-ae58f728f234.png)
  
**ケース③、連速ひらがな・カタカナ**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/36a6da77-6d51-729a-c73c-9b57f04b5b52.png)

**ケース④、連速漢字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/fc6c9ba7-9461-46a1-4362-99c9c5d63325.png)
  
**ケース⑤、連速ハングル**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/51b79718-dee6-3e00-9ddb-3d214a410112.png)

**ケース⑥、連速特殊文字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/2f1c58de-f3bf-1a14-55e7-56d47b977f58.png)

**ケース⑦、連速ビックリ文字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/6f7235b3-29cf-5433-6de7-f79b548d28c7.png)

**ケース⑧、スペース含め連速数字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/820db0d3-5868-bc64-f6bd-34a0f118e868.png)

**ケース⑨、ハングル含め連速数字**  
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/210251b5-2734-bb4f-3d0e-268cb322e5ef.png)
  
  
テストケースが多かった感じがありますが、テストの結果をご覧すると、原因をすぐ理解しましたと思っております。  
原因は、**🌟スペース以外の1バイト文字がスペースなしで連速に並んでいると、それを一つの単語と判断してエリアを過ぎてしまう**という原因でした。

##解決
解決できる方法としては、いろいろあると思いますが、自分が解決した方法を説明させていただきたいと思っています。
それは、**CSSの`word-break`で改行処理する方法**でございます。
`word-break`とは、単語意味の通り、単語を切るというものです。
基本的に、次の行に変わるときは、単語単位で変わることになっています。
`word-break`は、エリアの範囲を過ぎたら改行するCSS設定でございます。

```css:tooltip_sample.css
.ui-tooltip {
    word-break:break-all;
}
```
![image](https://qiita-image-store.s3.amazonaws.com/0/108364/7a6e47d2-a8cd-5f13-18f7-9aa258a74822.png)

##まとめ
jqueryから提供されている便利なオブジェクトがいろいろありますが、利用ケースによって予想以外の結果を出している場合があります。
その原因が起こる可能性が少ないだと無視するとまずいと思っております。
しっかり、利用する機能は色々なケースを確認しましょう！
以上です。