добавление изображений в div jquery

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

У меня есть контейнер div, который содержит еще 4 раздела, и каждый из этих разделов имеет заголовок, изображение и тег абзаца. То, что я делаю, — это игра, в которой, когда я нажимаю на один из разделов, изображений, оставшиеся 3 изображения, которые не были нажаты, переходят в раздел «Перейти в другой раздел» с классом «враги». Как бы я это сделал, не имея набора функций onclick для каждого символа?

     <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>Week 4 Game</title>
        <link rel = "stylesheet" type = "text/css" href = "assets/css/reset.css">
        <link rel="stylesheet" type="text/css" href="assets/css/style.css">

        <!-- Added link to the jQuery Library -->
        <script src="https://code.jquery.com/jquery-2.2.3.js" integrity="sha256-laXWtGydpwqJ8JA X9x2miwmaiKhn8tVmOVEigRNtP4=" crossorigin="anonymous"></script>
        <script type="text/javascript" src = "assets/javascript/game.js">    </script>

    </head>
    <body>
    <div class = "characters">
    <div class="charContainer">
        <h2 id="c1"></h2>
        <img class="vade" src="assets/images/vader.jpg">
        <p id="c1hp" data-hp = "120"></p>
    </div>
    <div class="charContainer1">
        <h2 id="c2"></h2>
        <img class="skywalker" src="assets/images/luke.jpg">
        <p id="c2hp" data-hp = "100"></p>
    </div>
    <div class="charContainer2">
        <h2 id="c3"></h2>
        <img class="obi" src="assets/images/obiwan.jpg">
        <p id="c3hp" data-hp = "150"></p>
    </div>
    <div class="charContainer3">
        <h2 id="c4"></h2>
        <img class="dmaul" src="assets/images/maul.png">
        <p id="c4hp" data-hp = "180"></p>
    </div>
    </div>
    <div id="your">
    <h2>Your Character</h2>
    <!-- <img class="dmaul" src="assets/images/maul.png"> -->
    </div>
    </body>
    </html>
 

jQuery

     $(document).ready(function(){
        $('#c1').text("Darth Vader");
        $('#c2').text("Luke Skywalker");
        $('#c3').text("Obi Won");
        $('#c4').text("Darth Maul");
        var health = $('#c1hp').data('hp');
        $('#c1hp').html(health);
        var health = $('#c2hp').data('hp');
        $('#c2hp').html(health);
        var health = $('#c3hp').data('hp');
        $('#c3hp').html(health);
        var health = $('#c4hp').data('hp');
        $('#c4hp').html(health);

        $('.charContainer').on('click', function(){
            var yourCharacter = $(this);
            $('#your').append(yourCharacter);
        });

    });
 

Я пытаюсь переместить любой из <div> s .charContainer , .charContainer1 , .charContainer2 , .charContainer3 включая заголовок, <img> и <p> тег внутри него в идентификатор <div> with #your .

Обновление: я нашел решение, выполнив .каждая функция для charContainer. Вместо того, чтобы иметь 4 разных контейнера символов, я просто назвал их одним и тем же классом и в .для каждой функции, для каждого из этих классов, которые не были добавлены к выбранному символьному полю, я добавил класс с именем .foes, чтобы теперь я мог различать «выбранные» и те, которые не были выбраны.

Комментарии:

1. Я попробовал просто использовать функцию onlclick для каждого символа и кучу других if внутри

2. Вы можете назначить функцию onclick всем разделам класса и использовать this для динамического достижения желаемого поведения.

3. Поделитесь некоторым кодом, чтобы другим было намного проще разобраться в вашей проблеме.

Ответ №1:

Я полагаю, что ваша ошибка заключалась в том, что у вас разные классы для «charContainer» (1,2,3,4). В вашем случае событие должно выглядеть так

  $('.charContainer, .charContainer1, .charContainer2, .charContainer3').on('click', function(){
 

Также, как вы это делаете — вы добавляете несколько символов, нажимая на них один за другим. Как насчет этого:

 $(function() {
    $('.charContainer').on('click', function(){
      var yourCharacter = $(this);
      $('#your').empty().append(yourCharacter.clone());
    });
 }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "characters">
    <div class="charContainer">
        <h2 id="c1">Darth Vader</h2>
        <img class="vader" src="assets/images/vader.jpg">
        <p id="c1hp" data-hp = "120"></p>
    </div>
    <div class="charContainer">
        <h2 id="c2">Luke Skywalker</h2>
        <img class="skywalker" src="assets/images/luke.jpg">
        <p id="c2hp" data-hp = "100"></p>
    </div>
    <div class="charContainer">
        <h2 id="c3">Obi Wan</h2>
        <img class="obiwan" src="assets/images/obiwan.jpg">
        <p id="c3hp" data-hp = "150"></p>
    </div>
    <div class="charContainer">
        <h2 id="c4">Darth Maul</h2>
        <img class="dmaul" src="assets/images/maul.png">
        <p id="c4hp" data-hp = "180"></p>
    </div>
    </div>
    <div id="your">
    <h2>Your Character</h2>
    </div> 

Комментарии:

1. Хорошо, я сделаю это, но мой предыдущий код работает, когда я нажимаю на выбранный класс div по щелчку мыши, но только когда я нажимаю на div-часть div. Как я могу сделать так, чтобы при щелчке в любом месте внутри этого div он перемещался туда. У меня есть тег h2, тег p и изображение в этом div, но функция onclick не будет отвечать, если я не щелкну рядом с краем поля div

2. Ваш предыдущий код работает, только если вы нажмете где-нибудь на первом div, потому что $(‘.charContainer’) выбирает только первый. Измените код, как я вам сказал, и он будет работать. Также, как вы можете видеть из моего фрагмента — он работает в любом месте, где вы нажимаете — h2, изображение, где-то в пустом пространстве вокруг изображения. Возможно, вам потребуется немного прочитать о четных пузырьках.