2012-01-29 5 views
1

Привет, может кто-нибудь скажет мне, почему этот код неверен? Я пытаюсь передать две переменные значения в функцию.Передача переменных в функцию javascript

$("#resizable-text1, #resizable-text2").draggable({ 
    containment: "#containment-wrapper1", 
    scroll: false, 
    stop: function(event, ui) 
    { 
     var id = $(this).attr('data-idSuffix'); 
     adjust_pos($('#resizable-text',id)); 
    } 
}); 

function adjust_pos(elem, id) { 
    alert('elem = '+elem) 
    alert('id = '+id) 
    var currentPos = $("#"+elem+id).position() 
    var xpos = parseInt(currentPos.left) 
    var ypos = parseInt(currentPos.top) 

    then use variables ele and id... 
} 

Любая помощь оценивается.

+1

Вместо '$ (this) .attr (" data-idSuffix ")' use '$ (this) .data ('idSuffix')' как jQuery (начиная с версии 1.5 или около того) уже понимает атрибуты «данные» , – Pointy

+0

Спасибо, ребята. Я отрегулирую проблему idsuffix. –

ответ

2

Вам не нужно обернуть строку в функции JQuery $(), потому что в вашей функции вы будете делать это в любом случае ($("#"+elem+id).position()). Просто отправьте строку.

Так это должно работать:

adjust_pos('#resizable-text', id); 

EDIT: Кроме того, либо в функции adjust_pos или в параметре вы передаете вы должны удалить #, потому что в противном случае было бы два. Я рекомендую вам удалить функцию, поэтому, если по какой-то причине вы хотите отправить селектор классов, вы тоже можете это сделать.

var currentPos = $(elem+id).position(); 
+1

+1 Функция требует строки вместо объекта jQuery, хотя функция также объединяет '#', поэтому ее нужно удалить на одном конце или в другом. –

+1

@amnotiam Спасибо, я добавил это к моему ответу. – kapa

1

Согласно ваш код adjust_pos функции, это как быть adjust_pos('resizable-text', id);

0

эта линия;

adjust_pos($('#resizable-text',id)); 

должно быть таким;

adjust_pos($('#resizable-text'),id); 
+0

Если вы посмотрите на функцию, это не сработает. Он ожидает строку, а не обернутый jQuery объект. – kapa

+0

Да, ваше решение верно. Я видел эту небольшую ошибку и не продолжал анализировать код. – japrescott

1

Похоже, ваша вторая закрывающая скобка в неправильном месте:

adjust_pos($('#resizable-text'),id); 

Update

Как было отмечено в комментариях, вы на самом деле не нужно проходить в объекте jQuery, с учетом того, что делает ваша функция с параметром. Вам просто нужно передать идентификатор элемента как строку.

Учитывая текущий код вы можете сделать:

adjust_pos('resizable-text',id); 

или с корректировкой в ​​код, который japrescott Рекомендовано (удаление хэша от функции и передать его в качестве части параметра):

adjust_pos('#resizable-text',id); 
+0

Спасибо всем, что ответили. Да, я такой глупый, это сейчас! –

+0

Если вы посмотрите на функцию, это не сработает. Он ожидает строку, а не обернутый jQuery объект. – kapa

+0

Спасибо @bazmegakapa Я обновил свой ответ, чтобы отразить это. –

Смежные вопросы