JQuery获取$(this)子节点对象的方法

相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢?

       首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQuery(),即$(this)=jquery();也就是说,这样可以返回一个jquery对象。那么,当你在网页中alert($('#id'));时,会弹出一个[object Object ],这个object对象,也就是jquery对象了。

       那么,我们再回过头来说$(this),这个this是什么呢?假设我们有如下的代码:

$("#desktop a img").each(function(index){

          alert($(this));

          alert(this);

}

那么,这时候可以看出来:

alert($(this));  弹出的结果是[object Object ]

alert(this);        弹出来的是[object HTMLImageElement]

也就是说,后者返回的是一个html对象(本例中是遍历HTML的img对象,所以为 HTMLImageElement)。很多人在使用jquery的时候,经常this.attr('src');   这时会报错“对象不支持此属性或方法”,这又是为什么呢?其实看明白上面的例子,就知道错在哪里了:

很简单,this操作的是HTML对象,那么,HTML对象中怎么会有val()方法了,所以,在使用中,我们不能直接用this来直接调用jquery的方法或者属性。

明白了$(this)和this的区别,再来看看这个例子:(假设,我的页面中a标签包含img,并含有src属性),当我在遍历的时候,想取到$(this)下img中src的地址

$("#desktop a ").each(function(index){

         var imgurl=$(this).find('img').attr('src');

         alert(imgurl);

        }

其中 .find(element) 是返回一个用于匹配元素的DOM元素,这样就可以取到想要的src地址了

### 回答1: 要使用 jQuery 获取 XML 直接子节点的名称并将其放入数组中,可以这样做: ``` var xml = '<root><element1 /><element2 /><element3 /></root>'; var xmlDoc = $.parseXML(xml); var $xml = $(xmlDoc); var elementNames = []; $xml.children().each(function() { elementNames.push(this.nodeName); }); ``` 这段代码会将 `<element1>`、`<element2>` 和 `<element3>` 这三个元素的名称分别加入到数组 `elementNames` 中。 ### 回答2: 使用jQuery获取XML直接子节点名称到数组中的方法如下: 1. 首先,使用$.ajax函数加载XML文件。假设XML文件名为data.xml: ```javascript $.ajax({ url: "data.xml", dataType: "xml", success: function(xml) { // 在这里处理XML文件 } }); ``` 2. 在success函数中,使用jQuery的find方法选择需要获取子节点: ```javascript var nodeNames = []; $(xml).find("parentNode > directChildNode").each(function(){ nodeNames.push(this.nodeName); }); ``` 这里的"parentNode"是直接父节点的名称,"directChildNode"是需要获取的直接子节点的名称。 3. 使用each函数遍历所选择的直接子节点,并将节点名称使用nodeName属性加入到定义的数组nodeNames中。 现在,nodeNames数组中存储了所有直接子节点的名称。 请注意,以上的代码片段仅适用于XML文件格式为普通的层级关系,如果XML文件具有更复杂的结构,则需要根据实际情况进行适当的修改。 ### 回答3: 要使用jQuery获取XML直接子节点的名称并将其添加到数组中,你可以使用jQuery的`children()`方法来选择所有直接子节点,并使用`.each()`方法遍历每个子节点。在遍历过程中,你可以使用`.nodeName`属性获取子节点的名称,并将其添加到一个数组中。 以下是一个示例代码: ```javascript var xml = "<root><child1>Value 1</child1><child2>Value 2</child2><child3>Value 3</child3></root>"; // 将XML字符串转换为DOM对象 var xmlDoc = $.parseXML(xml); // 选择根节点的所有直接子节点 var children = $(xmlDoc).children(); // 创建一个数组来存储子节点名称 var childNames = []; // 遍历每个子节点 children.each(function() { // 获取子节点的名称并将其添加到数组中 childNames.push(this.nodeName); }); // 输出子节点名称的数组 console.log(childNames); ``` 运行上述代码将输出一个包含直接子节点名称的数组 `["child1", "child2", "child3"]`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值