2014-11-13 2 views
1

У меня есть функция, которой передается объект jQuery в качестве аргумента. См. Ниже код.

$('selector').click(function() { 
    // $(this) is the jquery object for the DOM on which I clicked. 
    test($(this)); 
}); 
function test(jqobj) { 
    // Here from jqobj, I want to get back the native javascript object (I mean the this) 
} 
+0

'тест (это);' Шутки в сторону??? Или просто '$ ('selector'). Click (test);' then inside 'test()', 'this' является щелчком узла DOM. *** WAIT *** Судя по всем различным ответам ниже, я должен упустить что-то действительно очевидное ... Вопрос может быть, почему вам нужно передать объект jq в качестве параметра функции? –

ответ

3

jqobj пары представляет собой массив элементов DOM, так что вы можете использовать

 jqobj[0] 

но проверить размер массива, если он не пустой, как

 jqobj.length > 0 
+0

Я пробовал это, и он работает. thks – Arun

0

если вы что будет только один элемент, то

function test(jqobj) { 
    var el = jqobj[0] 
} 
1
var __this=this; //declare out side your function. 
function test(){ 
__this; //use __this in your function. 
} 
+0

Глобальное состояние - плохая идея ... –

0

скорее передающий объект в качестве параметра, вы также можете отправить идентификатор элемента или класс в функцию. Затем вы можете использовать метод getElementById внутри функции для ссылки на элемент.

0

Если вы не проходите многократное использование элементов, как это:

function test(jqobj) { 
    var obj; 
    if(jqobj[0]!=null) 
    { 
     obj = jqobj[0]; 
    } 
    } 
2

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

//From jQuery object to Dom: 
var domobject = jqueryObject.get(); 
//From Dom to jQuery object 
var jqueryObject = jQuery(domobject); 

Пример:

//From Dom to jQuery object 
    var overlayContent = document.createElement("div"); 
Смежные вопросы