简体   繁体   English

当单击另一个对象时,如何在jQuery中传递对象?

[英]How do you pass an object in jQuery when another object is clicked?

i have a html code like this: 我有这样的html代码:

<input type="text" class="form-control" id="txtCopyright" placeholder="IN" />

<div class="input-group-btn nopadding">
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"  style="border-radius:0"><span class="caret"></span></button>
    <ul class="dropdown-menu dropdown-menu-right" id="myDropdown" role="menu">
    <li><a>IN</a></li>
    <li><a>BEFORE</a></li>
    <li><a>AFTER</a></li>
    </ul>
</div>

Other input-group 其他输入组

<input type="text" class="form-control" id="txtOtherInput" placeholder="Other" />

<div class="input-group-btn nopadding">
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown"  style="border-radius:0"><span class="caret"></span></button>
    <ul class="dropdown-menu dropdown-menu-right" id="myDropdown2" role="menu">
    <li><a>1</a></li>
    <li><a>2</a></li>
    <li><a>3</a></li>
    </ul>
</div>

and i have a jQuery like this.. 我有一个这样的jQuery。

$('#myDropdown li').click(function () {
    $('#txtCopyright').val($(this).text());
});

$('#myDropdown2 li').click(function () {
   $('#txtOtherInput').val($(this).text());
});

It actually work in me.. but the problem is that i want to use only one jQuery in all my dropdown.. it is easy to use for now because i have only 2 dropdown what if i have 20 dropdown then i will set 20 jQuery's and I think it is redundant.. 它实际上对我有用..但是问题是我想在所有下拉菜单中仅使用一个jQuery ..现在很容易使用,因为我只有2个下拉菜单,如果我有20个下拉菜单,那么我将设置20个jQuery我认为这是多余的。

My idea is to pass the id of inputs but how to do that.. 我的想法是传递输入的ID,但该怎么做。

Any idea.. 任何想法..

Please help me Thank you. 请帮帮我,谢谢。

If all dropdown/ input pairings each are contained in a single parent wrapper the whole issue is fairly easy. 如果所有下拉/输入对都包含在单个父包装中,那么整个问题就很容易了。 Give the input's a common class. 给输入一个普通的类。 Then from the dropdown it is a simple traverse to main parent and look for input inside by class 然后从下拉列表中轻松遍历主要父对象,然后按类在内部查找输入

<div class="module_wrap">
    <input class="menu-input" type="text" class="form-control" id="txtCopyright" placeholder="IN" />
    <div class="input-group-btn nopadding">
        <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" style="border-radius:0"><span class="caret"></span>
        </button>
        <ul class="dropdown-menu dropdown-menu-right" id="myDropdown" role="menu">
            <li><a>IN</a>
            </li>
            <li><a>BEFORE</a>
            </li>
            <li><a>AFTER</a>
            </li>
        </ul>
    </div>
</div>

JS JS

$('.dropdown-menu li').click(function () {
    $(this).closest('.module_wrap').find('.menu-input').val($(this).text());

});

Apply class selector and use data- attribute: 应用类选择器并使用data-属性:

<ul class="dropdown-menu dropdown-menu-right" id="myDropdown" data-control-id="txtCopyright" role="menu">
    <li><a>IN</a>
    </li>
    <li><a>BEFORE</a>
    </li>
    <li><a>AFTER</a>
    </li>
</ul>

and on click of li use closest() or parent() to get parent ul and then fetch its data-control-id attribute value and then do like this: 并单击li时,使用closest()parent()获取父ul ,然后获取其data-control-id属性值,然后执行以下操作:

$('.dropdown-menu li').click(function () {
    $('#'+$(this).closest(".dropdown-menu").data("control-id")).val($(this).text());
});

or: 要么:

$('.dropdown-menu li').click(function () {
        $('#'+$(this).parent(".dropdown-menu").data("control-id")).val($(this).text());
    });

DEMO: 演示:

FIDDLE EXAMPLE 例子

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM