Преобразование элемента DOM в объект jQuery
В Преобразование элемента DOM в объект jQuery вы делаете следующее:
var jquery_object = jQuery(dom_element);
Итак, в вашем примере это будет$(this)
или $(event.target)
- в зависимости от того, хотите ли вы текущий элемент или элемент, который фактически вызвал событие (в вашем случае они одинаковы, если событие не будет вызвано каким-либо элементом-потомком).
ПреобразованиеОбъект jQuery для элемента DOM
Чтобы преобразовать объект jQuery в элемент DOM , вы можете просто обработать объект jQuery
как массив или использовать его метод get()
следующим образом:
var dom_element = jquery_object[0];
или
var dom_element = jquery_object.get(0);
Вышеприведенное вернет первый объект, сохраненный в объекте jQuery - если есть только один, проблем быть не должно (если их больше, просто замените 0
на другойиндекс, чтобы получить соответствующий элемент, или просто опустите аргумент для get()
, чтобы получить все элементы в виде массива.
Ваш код изменен на использование jQuery
Ваш код может выглядеть следующим образом(если вы настаиваете наиспользование трудно поддерживаемых атрибутов событий):
<HTML>
<HEAD>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<SCRIPT type="text/javascript">
function test(target) { alert(target.get(0).nodeName); }
</SCRIPT>
</HEAD>
<BODY>
<DIV>
<ul>
<li onclick="test($(this))">This is fair</li>
<li onclick="test($(this))">No its not</li>
<li onclick="test($(this))">Why not</li>
<li onclick="test($(this))">Becoz...</li>
</ul> </DIV>
</BODY>
, за исключением , в этом случае использование jQuery совершенно бесполезно , и вы можете просто работать непосредственно с элементами DOM, преобразовывая их в jQuery при необходимости:)
Ваше решение изменено для привязки событий за пределами <body>
Ваш код, использующий jQuery для привязки событий в jQuery 1.7+, может выглядеть так:
<HTML>
<HEAD>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<SCRIPT type="text/javascript">
$(function(){
$('li').on('click', function(event){
alert(event.target.nodeName);
});
});
</SCRIPT>
</HEAD>
<BODY>
<DIV>
<ul>
<li>This is fair</li>
<li>No its not</li>
<li>Why not</li>
<li>Becoz...</li>
</ul> </DIV>
</BODY>
См.выше в действии здесь: jsfiddle.net / tadeck / 2PqPP /