2012-03-21 190 views
0

我正在構建一個Chrome擴展,並且需要能夠在類show_review的第一個表上執行click()。我遇到的問題是這些鏈接都具有相同的類,沒有ID。選擇具有類屬性的一系列元素中的第一個元素

這裏是我試圖單擊有多個表都具有相同的類:

<table cellpadding="0" cellspacing="0" class="show_review" onmousemove="csmd1(this)" onmousedown="csmd2(this)" onclick="adOpen(this,1,317543,'680536')" msm="1" msc="1"></table> 

這裏是我的代碼。重新加載時,它不會執行任何操作。只是坐在那裏沒有點擊。

if ($(".show_review")[0].length){ 
    $(".show_review")[0].click(); 
} 
+0

你肯定當你觸發點擊事件時,這些元素的存在?也許你需要使用DOM準備事件?看到我的更新。 – gdoron 2012-03-21 23:05:07

+0

當您使用數組訪問器時,您會將實際的dom元素從jQuery集合中取出,而'.eq(n)'會爲您提供一個包含位置'n'處的元素的jQuery集合。所以:'$('。show_review')[0] .length'是一個很糟糕的情況,因爲你可能只想測試'$('.show_review').length'然後'$('.show_review')[0 ] .click()'應該是'$('。show_review')。eq(0).click()'。最後,由於在空集上執行任何函數都可以使用jQuery,所以你甚至不需要首先檢查。 – nickf 2012-03-21 23:11:29

回答

2
if ($(".show_review").length){ 
    $(".show_review").eq(0).click(); 
} 

雖然你可以用一條線做到這一點:

$(".show_review:first").click(); 

jQuery選擇和功能的設計與0+元素的工作。
所以在這種情況下,如果沒有選擇元素,click函數將不會執行任何操作。

謝謝你jQuery!


更新: 您可能需要使用DOM ready事件。

$(function(){ 
    ... 
    $(".show_review:first").click();   
    ... 
}); 
+0

所以我嘗試'$(「。show_review:first」)。click();'但同樣的問題沒有任何反應。難道是因爲它有onclick屬性嗎? – jon 2012-03-21 23:01:39

+0

@jon。 **這是壞習慣**,但不是。向我展示HTML,問題在於DOM或選擇器。 – gdoron 2012-03-21 23:03:35

+0

這裏是html http://pastebin.com/xmw4xEAa – jon 2012-03-21 23:10:24

1
var firstTable = $("table.show_review:eq(0)"); 
相關問題