javascript - 如何使单击链接填充出现在其前面的输入元素的值?

标签 javascript jquery

我有以下内容:

<div class="btn-group">
    <input disabled="disabled" id="dialogType">
    <button data-toggle="dropdown" class="dropdown-toggle">
    <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" id="towns">
        <li><a data-value="0Z" href="#">A</a></li>
        <li><a data-value="10" href="#">B</a></li>
    </ul>
</div>

<div class="btn-group">
    <input disabled="disabled" id="dialogStatus">
    <button data-toggle="dropdown" class="dropdown-toggle">
    <span class="caret"></span>
    </button>
    <ul class="dropdown-menu" id="places">
        <li><a data-value="22" href="#">C</a></li>
        <li><a data-value="33" href="#">D</a></li>
    </ul>
</div>

过去,当单击其中一个链接时,我使用以下 JavaScript 来填充 #town 标签字段:

$('#towns > li > a').click(function (e) {
    e.preventDefault();
    $('#town').text($(this).html())
 });

现在我想让这个 javascript 适用于具有类下拉菜单的 DIV 内的任何类似 ul。

所以我想要的是:

  • 当用户单击 A 等链接时,btn 组内的第一个输入元素将被赋予 A 值以及“0Z”数据值
  • 当用户点击 D 等链接时,该 btn 组内的第一个输入元素将被赋予 D 值以及数据值“33”

有人可以告诉我如何做到这一点吗?我只需要上面函数的更通用版本。 。

最佳答案

我建议,尽管目前尚未测试:

$('.dropdown-menu a').click(
    function(e){
        e.preventDefault();
        var that = $(this),
            dValue = that.attr('data-value');
        that.closest('.btn-group').find('input:first').attr('data-value',dValue).val(dValue);
    });

其工作原理基本上是:

  1. 点击链接会阻止默认操作,
  2. 找到最接近的.btn-group (祖先)元素,
  3. 找到第一个后代 input内的元素,
  4. 分配 data-value (分配给 dValue 变量)到 data-value input 的属性,最后
  5. 分配值dValue成为value其中input .

编辑以回应OP留下的评论:

...I will have more HTML with button groups loaded with Ajax. Sorry I should have said that. Because of that should I also use "on"...

因为 btn-group元素是动态添加的,我建议进行以下更改:

$('#idOfBtnGroupParentElement').on('click','.dropdown-menu a',
    function(e){
        e.preventDefault();
        var that = $(this),
            dValue = that.attr('data-value');
        that.closest('.btn-group').find('input:first').attr('data-value',dValue).val(dValue);
    });

引用文献:

关于javascript - 如何使单击链接填充出现在其前面的输入元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175747/

相关文章:

javascript - 使用 "shared"按钮(而不是类型 "submit"的输入元素)时如何使表单验证正常工作?

javascript - 第 n 个 child (奇数)在更改类(class)时无法正常工作

javascript - 在运行代码之前等待 jQuery $.get 函数完成

javascript - 道场验证

javascript - Egghead.io Redux 教程 - 第 17 课 : "TypeError: Cannot read property ' map' of undefined

javascript - 使用 thunk 来计算异步代码中的时间

javascript - 带有 PopState 和 AJAX 的 HTML 5 History API 不断重新加载页面

jQuery .animate() 强制样式 "overflow:hidden"

javascript - 如何重新连接浏览器websocket客户端?

javascript - 如何获取跨多个函数返回的变量 - Javascript/jQuery