Сообщение от 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');
};
});