2017-08-09 25 views
1

HTML不能使JQuery的。孩子()選擇工作

div id="picksItem1" class="browser-content-item" onclick="navigate('https://ddg.gg',$(this).attr('id'))"> 
    <div class="browser-content-item-frame"></div> 
</div> 

JQuery的

function navigate(link,item) { 
    $(item).children('.browser-content-item-frame').css("width", ($(window).width()/2) + 80 + "px"); 
    $(item).children('.browser-content-item-frame').css("height", "320px"); 

} 

Full Context(點擊 「編輯精選」 中的縮略圖預覽部分)

沒有錯誤報告,但沒有任何反應。記錄$(item).children會返回一條關於它爲空的消息。

回答

0

您沒有通過onclick函數中的項目,而是一個字符串(id)。

變化

navigate('https://ddg.gg',$(this).attr('id')) 

navigate('https://ddg.gg',$(this)) 

關於adeneo的評論,確實是一個更好的方法是添加事件監聽

function navigate() { 
 
    var url = $(this).attr("data-href"); //get your url from the div object 
 
    $(this).children('.browser-content-item-frame').css("width", ($(window).width()/2) + 80 + "px"); 
 
    $(this).children('.browser-content-item-frame').css("height", "320px"); 
 

 
} 
 

 
$("#picksItem1").click(navigate);
.browser-content-item-frame { 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div data-href="https://ddg.gg" id="picksItem1" class="browser-content-item" > 
 
    <div class="browser-content-item-frame">click me</div> 
 
</div>

+4

或更好的是,停止使用內嵌javascript – adeneo

+0

可能會有數百個像這樣的元素。我不知道我應該如何爲每個人單擊一個監聽器。 –

+0

請參閱我的補充以迴應@adeneo非常真實的評論。 – Mouser

0

既然你知道的div #ID,沒有必要通過一個jQuery函數到您的自定義函數:

<div id="picksItem1" class="browser-content-item" onclick="navigate('https://ddg.gg','#picksItem1')"> 

做到這兩個你的「picksItem」的div。但更好的解決方案是在你的JS中添加一個'click'事件監聽器,而不是在你的html中定義它。

然後你只有一個功能,可以正確使用this。您可以將自定義link值存儲在data-link=''屬性上,並在您的事件偵聽器中訪問它。