Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передать значение в селектор jQuery (https://javascript.ru/forum/events/62594-peredat-znachenie-v-selektor-jquery.html)

Orleon 19.04.2016 11:50

Передать значение в селектор jQuery
 
Добрый день, уважаемые коллеги. Я еще новичок в JavaScript, поэтому мой вопрос может показаться банальным, прошу не судить строго:

Мне необходимо выбрать div с определенным индексом в определенном id внутри экземпляра класса. ID передается параметром и может иметь разные значения. Как правильно задать селектор jQuery, чтобы получить доступ к нужному мне элементу?

function Matrix(containerID, rows, cols)

this rows = rows;
this cols = cols;
this.containerID = containerID;

this.setCell = function(row,col){
var index = ......; //вычисление индекса
var cell = $("#this.containerID div").eq(index);   // Вот здесь проблема с обращением к div'у в конкретном ID.
}

Dilettante_Pro 19.04.2016 12:44

Orleon,
Покажите хотя бы некоторые примеры вашего HTML, а то как-то все очень расплывчато:-?

Orleon 19.04.2016 12:58

Так сейчас попробую объяснить получше:

в HTML все просто имеем всего один ID в body:

Код:

<body>
	<div id="matrix1"></div>
</body>

далее в JS генерируем матрицу из заданного кол-ва дивов:

function Matrix(containerID,rows,cols){
	this.containerID = containerID;
	this.rows = rows; //Кол-во строк
	this.cols = cols; //Кол-во столбцов
	var n = this.rows * this.cols; //Кол-во ячеек матрицы
	this.create = function (){
			var matrix = document.getElementById(this.containerID);
			for (var i = 0; i < n; i++){
				var div = document.createElement('div');
				div.className = 'cell';
				matrix.appendChild(div);
			}
		}


Далее нам нужно просто div с заданными параметрами col и row закрасить цветом. Для этого у меня функция фнутри того же класса Matrix:

this.setCell = function([row,col],val){ //Установка ячейки
		var a = [row,col]
		var index = (a[0]-1)* this.cols + (a[1]-1);
		var cell = document.getElementById(this.containerID).children[index]; //Получаем ячейку
		cell.className = (val ? "cell light" : "cell"); //Присваеваем класс в зависимости от параметра val
	}


Так вот внутри этой функции в 4 строке идет обращение к DOM-элементу. Нужно эту строчку поменять так, чтобы было обращение через jQuery

Orleon 19.04.2016 13:23

А, всё! Пока обдумывал смысл вашего вопроса - до меня дошло, что id в html всегда один и тот же будет, а я почему то привязался к id объекта и думал, что надо обращаться через него :))


Часовой пояс GMT +3, время: 13:53.