Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换JavaScript';这';到jQuery'$(本)及"x27 ;;_Javascript_Jquery_Html_Traversal - Fatal编程技术网

转换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>