2013-09-18 3 views
0

Я пытаюсь сделать подвижные изображения внутри контейнера. Я использую плагин jQuery отсюда: http://threedubmedia.com/. Я хочу, чтобы в контейнере появлялись вещи, когда я нажимаю на них, но у меня возникают проблемы с изменением класса моего объекта (.item) за пределами моего контейнера. Заранее спасибо! Извините, если я сделал глупые ошибки, я просто изучаю javascript.Javascript - возникли проблемы с changeClass() onClick

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script> 
<script src="./js/jquery.event.drag-2.2.js" ></script> 
<script src="./js/jquery.event.drag.live-2.2.js" ></script> 
<script type="text/javascript"> 
jQuery(function($){ 
    var $div = $('#container'); 
    $('.drag') 
     .drag("start",function(ev, dd){ 
     dd.limit = $div.offset(); 
     dd.limit.bottom = dd.limit.top + $div.outerHeight() - $(this).outerHeight(); 
     dd.limit.right = dd.limit.left + $div.outerWidth() - $(this).outerWidth(); 
     }) 
     .drag(function(ev, dd){ 
     $(this).css({ 
      top: Math.min(dd.limit.bottom, Math.max(dd.limit.top, dd.offsetY)), 
      left: Math.min(dd.limit.right, Math.max(dd.limit.left, dd.offsetX)) 
     }); 
     }); 
}); 
</script> 

<div id="container"></div> 
<div class="drag" style="left:40px;"></div> 
<div class="drag" style="left:120px;"></div> 
<div class="drag" style="left:200px;"></div> 
<div class="item"></div> 

<style type="text/css"> 
.drag { 
    position: absolute; 
    border: 1px solid #89B; 
    background: #BCE; 
    height: 58px; 
    width: 58px; 
    cursor: move; 
    top: 120px; 
    } 
#container { 
    height: 299px; 
    border: 1px dashed #888; 
    } 

.item { 
    height: 58px; 
    width: 58px; 
    background: #000; 
} 

</style>​ 



<script type="text/javascript"> 
function changeclass() { 
$('.item').click(function(){ 
    $(this).removeClass('item'); 
    $(this).addClass('drag'); 
}); 
} 

</script> 
+1

ошибка, проблема проблема у г облицовкой? –

+0

Если вы сделали какую-нибудь скрипку, можете поделиться ею? – Rizstien

ответ

0

Возможная причина может быть, готовый блок для changeClass():

$(document).ready(function(){ 
    function changeclass() { 
    $('.item').click(function(){ 
     $(this).removeClass('item'); 
     $(this).addClass('drag'); 
    }); 
    } 
}); 

, если вам нужно просто изменить класс элемента на событие щелчка попробуйте:

$(document).ready(function(){ 
    $('.item').click(function(){ 
     $(this).removeClass('item'); 
     $(this).addClass('drag'); 
    });   
}); 
+0

Спасибо, Zaheer, Я включил ваш код, и он позволяет мне изменять класс, однако я не могу переместить объекты, которые добавляют новое имя класса после нажатия на них. Они берут класс css, но не js в верхней части кода. Есть идеи? Еще раз спасибо. – Scryeur

0

Когда ниже сценарий оказано | Проверьте эту скрипту Demo

var $div = $('#container'); Ваш документ еще не готов.

Позвоните скрипт на window.onload или $ (документ) .ready

Пример

window.onload = function(){ 

    jQuery(function($){ 
     var $div = $('#container'); 
     $('.drag') 
      .drag("start",function(ev, dd){ 
      dd.limit = $div.offset(); 
      dd.limit.bottom = dd.limit.top + $div.outerHeight() - $(this).outerHeight(); 
      dd.limit.right = dd.limit.left + $div.outerWidth() - $(this).outerWidth(); 
      }) 
      .drag(function(ev, dd){ 
      $(this).css({ 
       top: Math.min(dd.limit.bottom, Math.max(dd.limit.top, dd.offsetY)), 
       left: Math.min(dd.limit.right, Math.max(dd.limit.left, dd.offsetX)) 
      }); 
      }); 
    }); 


    $('.item').each(function(){ 
    $(this).click(function(){ 
    $(this).removeClass('item'); 
    $(this).addClass('drag'); 
    }); 
    }); 
} 
Смежные вопросы