2016-03-07 79 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