我如何使用jQuery来点击和选择并让它填充一个字段

How do I use jQuery to click and option and have it populate a field

本文关键字:填充 字段 一个 jQuery 何使用 选择      更新时间:2023-09-26

我使用以下代码让jQuery处理选项的单击,并将该值放入字段中。除了我在标记中的部分外,代码都能工作。我不明白为什么粗体标记中的部分在单击时什么都不做,而后面的文本却做了。

这是HTML:

<div id="result" style="display: block;">
 <div class="show" align="left">
  <b>This text doesn't work when clicked</b> 
  This text works when clicked
 <span class="name" align="left">113096G</span>
</div>

下面是jQuery:

// When clicking an option, the value populates the #projectsearchid field  
jQuery("#result").live("click",function(e){ 
    var $clicked = $(e.target);
    var $name = $clicked.find('.name').html();
    $('#projectsearchid').val($name);
});

也许有一种更简单的方法可以实现这一点?

var $name = $clicked.parent().find('.name').html();

find():描述:获取当前匹配的元素,由选择器、jQuery对象或元素过滤。

因此,该方法将在<b></b>内部查找类名为name的元素。。它当然找不到任何东西,因为在这种情况下,类名为name的元素是sibling,而不是child。你会注意到,如果你添加.parent() ,它会找到一些东西

演示

$('#result').on('click',function(e){ 
    var $clicked = $(e.target);
    var $name = $clicked.parent().find('.name').html();
    //$('#projectsearchid').val($name);
    alert($name);
});

首先,不推荐使用jquery.live。您应该使用jquery.on。您的代码不起作用的原因是,当您单击b元素时,e.target与而不是div#result关联。当你打电话时:

$clicked.find('.name').html();

它找不到span.name,因为该元素没有该类的子级。当你点击时也会发生同样的情况。而是做

$clicked.parent('#result').find('.name').html();

那应该能满足你的需求。