2011-07-01 66 views
1

我試圖訪問一個動態生成的鏈接的 '的onclick' 屬性:使用jQuery ATTR(的 'onClick')將返回undefined

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

元素,因爲它出現在Firebug^

我可以訪問href屬性的條件:

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

輸出到螢火蟲控制檯:
http://www.vdbestates.com/ ...(故意縮短)
undefined

任何想法??謝謝!


(編輯)ANSWERED:

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

指多個元素,儘管未每個這些元素的標籤具有onclick屬性。我意識到,只有一個元素有它。我重新調整了jQuery,如下所示:

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

並獲得了onclick屬性的值。 故事的道德,要小心嘗試訪問一組元素的屬性,因爲它們可能並不都具有所需的屬性,因此返回未定義的。

乾杯!

+0

是的,這就是[我的答案表明](http://stackoverflow.com/questions/6550892/using-jquery-attronclick-returns-undefined/6550957#6550957)。 – user113716

+0

絕對。我檢查了你。感謝您的幫助,我剛剛發佈我的編輯,然後我看到您的答案哈哈。當我不是新手時,我會加1。 –

回答

0

考慮到從控制檯消息href是,在你的HTML不同,我想說的是,在指數[0]元素比你所定位的不同。

如果您有多個.IDX-detailsSubLink a實例,那麼您就抓住了第一個實例。

如果頁面上只有一個,那麼它將返回包裝內聯onclick內容的函數。

如果您想要實際的屬性,您可以改爲使用getAttribute()

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

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

1

如果你只是想訪問onclick屬性的值,那麼你可以這樣做:

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

要與你已經有了適合這,它會是這個樣子:

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

這就是他說的不工作:$(「elementID」)。attr(「onclick」); – david

+0

@david - 他的代碼是這樣的:'$ sublinkA [0] .onclick',沒有使用'attr'函數。 –

+0

你是對的我正在尋找他的職位的標題 – david