質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

1297閲覧

スマホの時に子要素をclickすると親要素も反応してしまう

akiiro_

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

2クリップ

投稿2018/11/19 05:35

編集2018/11/19 10:05

前提・実現したいこと

liまたはspanをclickするとliが消える。

ul>li>spanで作成しています。

  • li、spanは動的に生成しています。
  • spanをclickするとliが消えます。
  • windowWidthが780未満の時はspanまたはliをclickしてもliが消えます。
  • Xcodeのsimulatorからローカルファイルを確認しています。
  • ディベロッパーツールからスマホサイズに切り替えた状態だと確認できません。

現在、liの削除は成功しています。

発生している問題・エラーメッセージ

スマホの時に子要素をclickしたら一瞬、親要素の背景がグレーになる。

該当のソースコード

JavaScript

1$(function () { 2 var $myselfSkillTagList = $('.js-myself-skill-tag-list'); 3 var windowWidth = $(window).width(); 4 var windowMedium = 780; 5 var skills = [ 6 {name: 'Illustrator'}, 7 {name: 'Photoshop'}, 8 {name: 'Indesign'}, 9 ]; 10 11 $.each(skills, function(i) { 12 var dynamicMyselfTagListItems = 13 $('<li class="js-myself-skill-tag-list-item js-sp-myself-skill-tag-list-item-delete">' + skills[i].name + '<span class="profile-edit-add-tag-myself-list-item-delete js-myself-skill-tag-list-item-delete"></span></li>'); 14 15 $myselfSkillTagList.append(dynamicMyselfTagListItems); 16 }); 17 18 // myselfTagListItem削除 19 var myselfSkillTagDelete = function () { 20 $myselfSkillTagList.on('click', '.js-myself-skill-tag-list-item-delete', function (e) { 21 $(e.target).parent().remove(); 22 23 e.stopPropagation(); 24 }); 25 } 26 27 28 // sp時 myselfTagListItem削除 29 var spMyselfSkillTagDelete = function () { 30 $myselfSkillTagList.on('click', '.js-sp-myself-skill-tag-list-item-delete', function (e) { 31 $(e.target).remove(); 32 33 e.stopPropagation(); 34 }); 35 } 36 37 if (windowWidth > windowMedium) { 38 myselfSkillTagDelete(); 39 } else { 40 myselfSkillTagDelete(); 41 spMyselfSkillTagDelete(); 42 } 43}); 44

HTML

1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width" initial-scale="1.0"> 6<title>無題ドキュメント</title> 7<link rel="stylesheet" href="test.css"> 8<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> 9<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 10<script src="test.js"></script> 11</head> 12 13<body> 14 <ul class="profile-edit-add-tag-myself-list js-myself-skill-tag-list"> 15 </ul> 16</body> 17</html> 18

CSS

1.profile-edit-add-tag-myself-list-item-delete { 2 color: #808080; 3 margin-left: 5px; 4 padding: 8px 0; 5} 6 7.profile-edit-add-tag-myself-list-item-delete::before { 8 font-family: "Font Awesome 5 Free"; 9 content: "\f00d"; 10 font-weight: 900; 11} 12 13

試したこと

バブリングだと思いe.stopPropagation();を追加しましたが効果ありませんでした。

補足情報(FW/ツールのバージョンなど)

イメージ説明
simulatorでlocal確認していますが実機でも同じ現象が出ます。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/11/19 06:05

動作が確認できるソースを提示して下さい
x_x

2018/11/19 06:44

グレーというのはどの部分の色が出ていますか? CSSが提示されていないため、どう頑張っても再現させられない感じです。
akiiro_

2018/11/19 07:28

@yambejp @x_x 大変失礼致しました。以後気をつけます。これから修正したコード貼りなおしますのでよろしくお願い致します。
x_x

2018/11/20 04:34

.js-sp-myself-skill-tag-list-item-deleteというのがliで、.js-myself-skill-tag-list-item-deleteがその子であるなら、spMyselfSkillTagDelete()を呼ぶときmyselfSkillTagDelete()は呼ばなくてもいいのでは?
akiiro_

2018/11/20 07:09

私もそう思って一度試してみたのですがmyselfSkillTagDelete()呼ばないと上手く発火しなかったので追加しました。
guest

回答1

0

js-myself-skill-tag-list-item-deleteが何か提示されていないので分かりづらいです

$(e.target).parent().remove();

javascript

1$(this).closest('li').remove();

的な処理でいけませんか?

投稿2018/11/19 06:39

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akiiro_

2018/11/19 07:43

回答ありがとうございます。 大変失礼致しました。 頂いたコードを追加しましたが変わらずでした。
yambejp

2018/11/19 08:28

できればソースをコピペすれば確認できるよう貼ってもらうか codepenなど確認可能なサイトへソースをアップしてください (追加で記載されたものも動作を確認できません)
akiiro_

2018/11/19 08:40

申し訳ございません。 前提条件に1つ加え忘れていたのですが、スマホ時にulの背景がグレーになります。 なのでXcodeのsimulatorからローカルファイルを確認しています。 因みにディベロッパーツールからスマホサイズした状態だと確認できません。 よろしくお願いします。
akiiro_

2018/11/19 10:09

大変失礼致しました。 確認不足が原因でした。 今、貼ってあるソースをコピペすれば動きますので度々で大変恐縮なのですがよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問