将 DOM 元素转换为 jQuery 对象
To 将 DOM 元素转换为 jQuery 对象您执行以下操作:
var jquery_object = jQuery(dom_element);
所以,在你的例子中它将是$(this)
or $(event.target)
- 取决于您想要当前元素还是实际触发事件的元素(在您的情况下它们是相同的,除非事件将由某些后代元素触发)。
将 jQuery 对象转换为 DOM 元素
To 将 jQuery 对象转换为 DOM 元素,你可以简单地对待jQuery
对象作为数组或使用它的get()
像这样的方法:
var dom_element = jquery_object[0];
or
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>
except 在这种情况下使用 jQuery 是完全没用的你可以直接操作 DOM 元素,在需要时将它们转换为 jQuery :)
您的解决方案更改为绑定外部事件<body>
在 jQuery 1.7+ 中使用 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(){
$('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/