转换JavaScript';这';到jQuery'$(本)及"x27 ;;
请查看以下代码:转换JavaScript';这';到jQuery'$(本)及"x27 ;;,javascript,jquery,html,traversal,Javascript,Jquery,Html,Traversal,请查看以下代码: <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) {
<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.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>
</HTML>
功能测试(目标){alert(target.nodeName);}
这是公平的
- 不,不是
为什么不呢
因为
函数测试接收目标(li节点)作为参数
现在,我可以将此变量转换为jQuery$(this)
或$(e.target)
或任何其他jQuery变量,以便使用jQuery方式遍历文档吗?尝试以下操作:
$(document).ready(function(){
$('ul li').click(function(){
alert($(this).index());
});
});
如果要阅读列表中的所有元素,可以使用:
$(document).ready(function(){
$('ul li').each(function(){
alert($(this).index());
});
)};
希望这有帮助。将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];
或
上面将返回jQuery对象中存储的第一个对象-如果只有一个,则应该没有问题(如果有更多问题,只需将0
更改为其他索引以获取适当的元素,或者省略get()
的参数以将所有元素作为数组检索)
您的代码已更改为使用jQuery
您的代码可能如下所示(如果您坚持使用难以维护的事件属性):
函数测试(目标){alert(target.get(0.nodeName);}
这是公平的
- 否不是
为什么不呢
因为
除了在这种情况下,使用jQuery是完全无用的并且您可以直接对DOM元素进行操作,在需要时将它们转换为jQuery:)
您的解决方案已更改为在
在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>
$(函数(){
$('li')。在('click',函数(事件){
警报(event.target.nodeName);
});
});
- 这是公平的
- 不,不是
- 为什么不呢
- 因为
请在此处查看上述操作:尝试此操作
<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(){
$('ul li').click(function(){
alert($(this).html());
})
})
</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>
$(函数(){
$('ul li')。单击(函数(){
警报($(this.html());
})
})
- 这是公平的
- 不,不是
- 为什么不呢
- 因为
是的,正是您建议的方式:$(this)
或$(e.target)
如果是这样的话,它将是$(target)
。目前,在test
内部,这个
将引用窗口
,因此我认为将它传递给jQuery没有多大用处。当然,您也可以直接传递jQuery对象:test($(this))
。我还建议您使用jQuery绑定事件处理程序,而不是使用内联事件处理程序。非常感谢:)scriptsrc=http://ajax...
还需要从我的side@Mayank:谢谢!:)为什么你们认为我在本地测试这个,我的意思是创建一个HTML文件,并在浏览器中打开它,而不运行任何服务器。这就是我需要用http开始的原因。它向我显示了错误$notdefined
。在我添加http之后,它工作了。@Mayank:它在本地不工作,可能是因为您使用了file://...
而不是例如http://localhost/...
-如果链接的URL以/
开头,这会产生很大的不同。“/
”当链接开始时,将URL视为与当前请求具有相同的协议部分,因此这是完全正确的。只需对本地请求使用http://
(您可以在web上搜索如何在localhost
上设置服务器,这是不同的主题)。祝你好运值得一提的是,如果传入jQuery元素,var el=jQuery(元素)不会中断。换句话说,在将其转换为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>
<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(){
$('ul li').click(function(){
alert($(this).html());
})
})
</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>