jQuery得到嵌套<a> element attribute inside div element</a>

时间:2011-08-20 20:28:55

标签: jquery attributes nested elements

页面上的对象

<DIV style="TEXT-INDENT: 0px; VISIBILITY: inherit" id=button46 jQuery16107163179349561973="2">
    <A title=Exit href="javascript:void(null)" name=button46anc>
        <IMG style="CURSOR: pointer" border=0 name=button46Img alt=Exit src="images/btn-exitoff.gif" width=66 height=39>
    </A>
</DIV>

我需要从div获取title属性的值。

在没有运气的情况下花几个小时(所有返回未定义)

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
    testThis = $(this.children('a'));alert($(testThis).attr('title'));
    testThis2 = $(this.find('a'));alert($(testThis2).attr('title'));
});

提前感谢您保存了我的头发。

3 个答案:

答案 0 :(得分:3)

$('div[id^="button"]').bind('click mouseover mouseout submit', function(event) {
    testThis = $(this).children('a');
    alert(testThis.attr('title'));
});

答案 1 :(得分:0)

this的内容不是jQuery对象,它是一个DOM元素。将它包装在jQuery对象中以使用childrenfind方法,然后您不需要包装结果:

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
  var testThis = $(this).children('a'); alert(testThis.attr('title'));
  var testThis2 = $(this).find('a'); alert(testThis2.attr('title'));
});

此外,在本地声明变量,以便它们不会在全局命名空间中结束。

另一种变体是使用DOM元素作为搜索的上下文:

var testThis = $('a', this);

答案 2 :(得分:0)

您需要先将this转换为jQuery对象,然后才能使用jQuery函数。

$('div [id^="button"]').bind('click mouseover mouseout submit',function(event){
    alert($(this).find('a')).attr('title'));
});