使用jQuery attr('onclick')返回undefined

时间:2011-07-01 16:50:45

标签: jquery onclick undefined attr

我正在尝试访问动态生成的链接的“onclick”属性:

<div class="IDX-linkVirtualTour">
     <p class="detailsLink_p">Virtual Tour</p>
     <div class="IDX-detailsSubLink">
          <a onclick="window.open('http://www.tourfactory.com/736220', 'VirtualTour', 'width=800, height=600, resizable=1, scrollbars=1, status=0, titlebar=0')" href="javascript:void(0)">Virtual Tour</a>
     </div>
</div>

出现在萤火虫中的元素^

我可以通过以下方式访问href属性:

var $sublinkA = $('.IDX-detailsSubLink a');
log( 
    $sublinkA[0].href +
    "\n" + 
    $sublinkA[0].onclick); // output the value to firebug console

输出到firebug控制台:
http://www.vdbestates.com/ ......(故意缩短)
未定义

任何想法?谢谢!

<小时/> (编辑)答案:

var $sublinkA = $('.IDX-detailsSubLink a')

指的是多个元素,但并非每个元素的标签都具有onclick属性。我意识到,只有其中一个元素拥有它。我重构了jQuery:

var $virtualLink = $('.IDX-linkVirtualTour .IDX-detailsSubLink > a');
log("onclick: " + $virtualLink.attr('onclick'));

并获取onclick属性的值。 故事的道德,小心尝试访问一组元素的属性,因为它们可能并非都具有所需的属性,因此返回undefined。

干杯!

2 个答案:

答案 0 :(得分:1)

如果您只是想尝试访问onclick属性的值,那么您可以这样做:

$("elementID").attr("onclick");

为了适应你已经拥有的东西,它看起来像这样:

var $sublinkA = $('.IDX-detailsSubLink a');
var onclickAttr = $($sublinkA[0]).attr("onclick");

答案 1 :(得分:0)

考虑到控制台消息中的href与HTML中的不同,我会说索引[0]上的元素与您要定位的元素不同。

如果你有.IDX-detailsSubLink a的多个实例,那么你就是抓住第一个。

如果页面上只有一个,那么它会返回包含内联onclick内容的函数。

如果您想要实际属性,可以使用getAttribute()代替。

var $sublinkA = $('.IDX-detailsSubLink a');
log( 
    $sublinkA[0].href +
    "\n" + 
    $sublinkA[0].getAttribute('onclick'));

但你仍然需要引用正确的元素。