Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает скрипт перемещения элементов (https://javascript.ru/forum/jquery/58060-ne-rabotaet-skript-peremeshheniya-ehlementov.html)

regnised 02.09.2015 15:41

Не работает скрипт перемещения элементов
 
Вот сам скрипт:
$('body').click(function (event) {
        console.log($('[visibility]'));
        if ($('[visibility]').length == 0){
            $(event.target).css({"visibility": "hidden"});

        } else {
            $('[visibility]').insertAfter($(event.target)).css({"visibility": "visible"});}
    });


тут я кликаю по элементу, если нет никаких скрытых элем. - делаю этот скрытым, если есть скрытый - ставлю его после того куда кликнул.
:cray:

рони 02.09.2015 16:03

Цитата:

Сообщение от regnised
если нет никаких скрытых элем

:-?
if (!$(':hidden').length){

рони 02.09.2015 16:30

regnised,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  div  {
      width: 100px;
      height: 100px;
      float: left;
      border: #000000 2px solid;
  }
  .first {
    background: #FF0000;
  }
  .last{
    background: #008000;
  }


  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
       $('body').on('click', 'div', function (event) {
        event.preventDefault();
        if (!$('div:hidden').length){
            $(this).hide();

        } else {
            $('div:hidden').insertAfter(this).show()}
    });

});


  </script>
</head>

<body>
<div class='first'>1</div>
<div class='first'>2</div>
<div class='first'>3</div>
<div class='last'>4</div>

</body>

</html>

regnised 02.09.2015 17:00

Спасибо, немного позже проверю :thanks:

regnised 02.09.2015 22:38

Переделал свое вот так:
$('body').click(function (event) {
    event.preventDefault();
    if (!$('div:hidden').length){
        $(this).hide();
    } else {
        $('div:hidden').insertAfter(this).show();}
});
- не работает

Может Ваше решение работает потому что есть $(function(){

$(function(){ //тут анонимная функция вызывается
$('body').on('click', 'div', function (event) { // тут при событии онклик с боди берем дивы
event.preventDefault(); // перехватываем дефаултное событие миши
if (!$('div:hidden').length){// если не нашли скрытых дивов - скрываем тот на который кликнули
$(this).hide();

} else {
$('div:hidden').insertAfter(this).show()} // если есть скрытый див - показываем
});
});

вопрос, почему у меня не работает? :) :(

рони 02.09.2015 23:26

Цитата:

Сообщение от regnised
скрываем тот на который кликнули
$(this).hide();

ой :nono:

рони 02.09.2015 23:37

regnised,
$('body').click(function (event) {  //есть ли body? к этому моменту или ещё нет
    event.preventDefault();
    if (!$('div:hidden').length){
        $(this).hide();  // скрыли  body
    } else {
        $('div:hidden').insertAfter(this).show();} // если вдруг был скрытый div, попытаемся всунуть его мимо  body
});

regnised 03.09.2015 14:08

вот немного подшаманил с тегом <p> работает
$(document).ready(
$('body').on('click', 'p', function (event) {
    event.preventDefault();
    if (!$('p:hidden').length){
        $(this).hide();  
    } else {
        $('p:hidden').insertAfter(this).show();} 
}));


Часовой пояс GMT +3, время: 08:59.