Чтобы получить значение объекта String
, вам необходимо использовать String.toString()
.
Непонятно, зачем нужен массив селекторов, но здесь два решения;
Ваше решение с использованием String.toString()
;
// Array of strings to be used as element selectors.
var selectors = ['#element1', '#element2'];
// Using $.each()
$.each(selectors, function() {
// String.toString() returns the value of the String object.
var $this = $(this.toString());
$this.click(function() {
console.log('Clicked element(1) =', this.id || this); // DEBUG
});
});
альтернативное решение с использованием String.join()
;
// Using String.join()
$(selectors.join(',')).click(function(event) {
event.preventDefault(); // This is to not follow the link
// Notice that "this" now referes to the current/clicked element
// and not any string value from the "selectors" array.
console.log('Clicked element(2) =', this.id || this); // DEBUG
});
Смотрите мой demo.
Если вам действительно не нужен массив селекторов, я бы порекомендовал простой multiple selector;
$('#element1, #element2').click(function() { ... });
+1 Я был удивлен, обнаружив, что 'this' был объектом' String', а не обычной строкой, но вы избили я к ответу. – Davy8
+1.Приятно объяснить, почему это не сработало так, как было, но также. .join() 'вещь - более хорошая альтернатива (предполагая, что массив необходим по какой-то другой причине). – nnnnnn