2016-03-29 1 views
0

Итак, допустим, что у меня есть переменная slide1.jQuery - объединить строку с целым числом для создания ранее существовавшей переменной

var slide1 = $('#slide1');

Как я могу сцепить строки, такие как «слайд» с целым числом, чтобы сделать его равным и вести себя так же, как что выше переменной, Slide1?

showThis('slide' + 1);

Here is my fiddle, так что вы можете увидеть сокращенную версию моего вопроса/путаницы в действии. Как вы увидите, результат конкатенации не скрывается, как я ожидал.

Я пытаюсь сделать что-то совершенно табу?

Заранее благодарен!

ответ

0

Ваш showThis() функции требуется объект Jquery и то, что вы обеспечиваете строка. Так что ваш код должен быть на самом деле это

showThis($('#slide' + 1));

+1

. Ваш ответ имеет наибольший смысл для того, что я пытаюсь выполнить. Мой фактический полный код использует индексную переменную, а не статическое целое (1), которое должно совпадать с каждым соответствующим идентификатором слайда. Так что спасибо тебе! :) – sky

-1

По какой-либо причине вы не можете использовать массив? например:

var slides = []; 
slides[0] = $('#slide0'); 
slides[1] = $('#slide1'); 
//etc 
showThis(slides[1]); 

или даже:

var slides = []; 
for(var i = 0; i< 10; i++){ 
    slides[i] = $('#slide' + i); 
} 
showThis(slides[1]); 
3
var slide1 = $('#slide1'); 
var button = $('#button'); 

button.click(function() { 
    showThis('slide' + 1); 
}); 

function showThis(thisSlide) { 
    alert(thisSlide); 
    $("#" + thisSlide).hide(); 
} 
+0

Это, похоже, работает для моего дела. Что именно делает партия $ ("#" + thisSlide)? – sky

+0

jquery $ ожидает строку как входную, поэтому она просто генерирует строку '# slide1' и игнорирует вашу ранее созданную переменную. Единственное различие заключается в том, что это динамический код, не зависящий от кнопки, которую вы нажимаете для работы. В этом случае, поскольку нет других кнопок, $ ('# slide1'). Hide() будет одинаковым – iagowp

+0

О, поэтому он фактически не передает обратно переменную, а сам элемент ID. В конце концов, не совсем то, что мне нужно. Спасибо! – sky

1

вам необходимо индексировать в глобальный объект окна, если вы действительно хотите сделать это таким образом.

var slide1 = $('#slide1'); 
var button = $('#button'); 

button.click(function() { 
    showThis(window['slide' + 1]); 
}); 

function showThis(thisSlide) { 
    alert(thisSlide); 
    $(thisSlide).hide(); 
} 

однако я бы с массивом, как и другие плакаты ответили

0

Вы можете получить доступ к свойствам объекта со строками, но на самом деле не переменные. Мол, у вас есть объект

var slide = { 
    slide1: $('#slide1'), 
    var button = $('#button'), 
} 

Вы можете получить доступ к Slide1 со строкой как этот

showThis(slide['slide'+1]); 

, как вы пытаетесь не является допустимым способом доступа к переменным.

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