2016-02-20 2 views
0

У меня есть jquery-плагин, который загружает выбранную фотографию с помощью ajax и php.

Он отлично работает, но мне нужно передать атрибут выбранной фотографии на php. Я получаю элемент html в $(this)[0]. Мне нужно что-то вроде:

$(this)[0].attr("data-index"); 

Что такое правильный способ получения attr из $(this)[0]

+2

'$ (this) .eq (0) .attr (" data-index ")' или '$ ($ (this) [0]). Attr (" data-index ");' –

+1

Если вы 't хотите снова обернуть элемент в jquery-обертке, тогда вы можете использовать javascript-подход '$ (this) [0] .getAttribute (« data-index »);' –

ответ

1

Вы должны выбрать элемент, как

$($(this)) 

Тогда вы можете найти атрибуту

Поэтому ваш код должен выглядеть так:

$($(this)[0]).attr("data-index"); 
+0

@webarch - Это бесполезно неэффективно. '$ (this) .attr (" data-index ");' все, что необходимо. Нет необходимости в двойных вложенных объектах jQuery или в '[0]' здесь. – jfriend00

+1

@ jfriend00 Да. Ты прав. Я старался, чтобы он получал это из массива. Я обновлю его –

+1

@ RinoRaj Я получаю это из массива, поэтому ваш первый ответ был правильным – WebArch

0

В JQuery, вы можете сделать это:

$(this).data("index"); 

, который будет автоматически иметь доступ к атрибуту data-index с помощью .data() функции JQuery в.

Или вы можете использовать это, чтобы прочитать атрибут непосредственно:

$(this).attr("data-index"); 

Так, вы знаете, что есть только один элемент в объекте JQuery, нет никаких причин, чтобы использовать [0] осложнения. Хотя вам здесь это не нужно, если вы хотите, чтобы первый элемент был из объекта jQuery, и вы хотите получить результат в объекте jQuery, вы можете использовать .eq(0), как в $(this).eq(0).attr("data-index");, но поскольку вы уже знаете, что есть только один элемент в $(this) , здесь нет причин.


Или в равнинных JS, вы можете сделать это:

this.getAttribute("data-index"); 

Или в современных браузерах, вы можете сделать:

this.dataset.index 

, который использует более новый .dataset feature.

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