2016-03-07 108 views
1

已解決!實際上問題出在$(document).ready(function(){//});在我使用它之後,它工作得很好。感謝您的幫助,並因爲這樣愚蠢的錯誤而感到抱歉。

我想從引導下拉菜單中選擇li。它的工作原理,但是當我想要得到所選李的文本時,它什麼也沒有顯示。

<div class="btn-group"> 
    <a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> 
     <font id="dropdownMenu" >inch</font> 
     <span class="caret"></span> 
    </a> 
    <ul id="dropdownList" class="dropdown-menu"> 
     <li><a href="#">inch</a></li> 
     <li><a href="#">cm</a></li> 
     <li><a href="#">mm</a></li> 
    </ul> 
</div> 

JS:

$('#dropdownList li').click(function() { 
    console.log($(this).text()); 
    document.getElementById('dropdownMenu').innerHTML = $(this).text(); 
}); 

可我知道爲什麼它不工作?

謝謝!

+1

我只是困惑,錯誤地回答。沒關係。但是你的代碼工作正常嗎? https://jsfiddle.net/ku99c8ad/1/'.text()'會獲取一個元素的所有文本節點,即使它是最深的後代。 –

+0

感謝您的支票,但它很奇怪它不在我的代碼中工作@RajaprabhuAravindasamy –

+0

''? Dude,它是2016. – enguerranws

回答

0

獲取裏面的錨標記文本。這是包含文字的元素。

$('#dropdownList li').click(function() { 
    console.log($(this).find('a').text()); 
    document.getElementById('dropdownMenu').innerHTML = $(this).find('a').text(); 
}); 
+0

儘管它說得很對,但仍然console.log沒有顯示任何內容。我想知道問題是否在其他地方。 –

+0

嘗試用find()而不是children()。已經更新了答案。 – eLGi

0

使用jQuery:

JSFiddle

$('#dropdownList li').click(function() { 
    console.log($(this).text()); 
    $('#dropdownMenu').text($(this).text()); 
}); 
+0

實際上console.log沒有顯示任何內容。 –

+0

$('#dropdownList li a')。click(function(){...}); – enguerranws

+0

你確定嗎?它在jsfiddle工作 –

0

你應該儘量限制DOM讀/寫,就像使用.find().text()等。我會在標記中添加一些數據

HTML:

<ul id="dropdownList" class="dropdown-menu"> 
    <li data-value="inch"><a href="#">inch</a></li> 
    <li data-value="cm"><a href="#">cm</a></li> 
    <li data-value="mm"><a href="#">mm</a></li> 
</ul> 

JS:

$('#dropdownList li').click(function() { 
    console.log($(this).data('value')) 
}) 

Working Demo

兩件事情:

  • data-*是,你可以用它來滿足您的需求有效的HTML5標記。
  • 不要每次點擊重新讀取DOM var dropdownValue = $('#value')
+0

即使它是正確的,但你仍然console.log顯示什麼。我想知道問題是否在其他地方。 –

+0

我剛剛發佈了JS小提琴,如果這不起作用,你的問題就在別的地方。 – Cohars