Показать сообщение отдельно
  #4 (permalink)  
Старый 15.01.2012, 17:11
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от IONEX Посмотреть сообщение
Спасибо за ссылку, все понятно, нужно использовать bind для этого, а для обращения к доп. переменной через запись eventOBJ.data. с этим разобрались...
не обязательно bind. я же код кинул.
Сообщение от melky Посмотреть сообщение
$('body').click({ foo :"bar"}, function(e){
    alert(e.data.foo);
});
Сообщение от IONEX Посмотреть сообщение
Реализация моего кода:
<script language="javascript">
        $(document).ready( function () {
            var li_tabs=$('#horisontal-tabs li'); 
            
	        $('#horisontal-tabs li').bind('click', {tabs:'$li_tabs'}, activeElement(obj));
            
            
            function activeElement(obj) {
	           $(obj.data.tabs).filter("*[class='active']").each(function (){
	               $(this).toggleClass('active unactive');
	           });
	           $(obj.target).toggleClass('active unactive');
            };
            

        });
    </script>
скажите, а вы что передаёте и что хотите получить в результате?

ваша ошибка кроется тут :

$('#horisontal-tabs li').bind('click', *!*{tabs:'$li_tabs'}*!*, activeElement(obj));

значение неверное. вы передаёте строку. скажите, вы знакомы с типами в JS ?

ещё одна ваша ошибка находится здесь :

$('#horisontal-tabs li').bind('click', {tabs:'$li_tabs'}, *!*activeElement(obj)*/!*);


вы знаете, что делают скобки () в javascript ? стоя после идентификатора, они вызывают функцию, передавая ей аргументы. тут вы запускаете функцию на выполнение, передавая ей несуществующую переменную obj.

.....

вам необходимо передать объект. следать это можно так :
$(document).ready( function () {
            var li_tabs=$('#horisontal-tabs li'); 
            
	        $('#horisontal-tabs li').bind('click', { tabs: li_tabs }, activeElement);
            
            
            function activeElement(obj) {
	           $(obj.data.tabs).filter("*[class='active']").each(function (){
	               $(this).toggleClass('active unactive');
	           });
	           $(obj.target).toggleClass('active unactive');
            };
            

        });


можно было и не заморачиваться с передачей данных. я бы сделал по-другому, учитывая возможности jQuery и используя их по-максимуму :

$(document).ready(function() {
    var li_tabs = $('#horisontal-tabs li').click(activeElement);
    
    function activeElement(obj) {
        li_tabs.
            filter(".active").
                add(obj.target).
                    toggleClass('active unactive');
    };
    
});
Ответить с цитированием