[英]jQuery selector - inserting value only to selected id
I have form with many inputs. 我有很多输入的表格。 And in JavaScript I have script for open modal window and choose options.
在JavaScript中,我有用于打开模式窗口的脚本并选择选项。
$("input[id^='field'][id$='A']").on('click', function() {
$("#bg").fadeIn(400, function() {
$("#modal").fadeIn(400);
});
});
$("#modal img").on('click', function() {
var text = $(this).siblings('.descr').text();
$("#modal").fadeOut(400, function() {
$("#bg").fadeOut(400, function() {
$("input[id^='field'][id$='A']").val(text);
});
});
});
(Full code below in the snippet) (以下代码段中的完整代码)
How can I edit this selector, to inserting chosen value only to input which I clicked? 如何编辑此选择器,以便仅将所选值插入到单击的输入中?
input[id^='field'][id$='A']
Every ID is unique. 每个ID都是唯一的。
$("input[id^='field'][id$='A']").on('click', function() { $("#bg").fadeIn(400, function() { $("#modal").fadeIn(400); }); }); $("#modal img").on('click', function() { var text = $(this).siblings('.descr').text(); $("#modal").fadeOut(400, function() { $("#bg").fadeOut(400, function() { $("input[id^='field'][id$='A']").val(text); }); }); }); $("input[id^='field'][id$='B']").on('click', function() { $("#bgB").fadeIn(400, function() { $("#modalB").fadeIn(400); }); }); $("#modalB img").on('click', function() { var text = $(this).siblings('.descr').text(); $("#modalB").fadeOut(400, function() { $("#bgB").fadeOut(400, function() { $("input[id^='field'][id$='B']").val(text); }); }); });
.field {margin: 10px;} #bg {position: fixed; height: 100%; width: 100%; background: rgba(0,0,0,0.5); left: 0; top: 0; display: none;} #modal {position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none;} #modal div {display: inline-block;} #modal img {height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modal img:hover {opacity: 1;} #bgB {position: fixed; height: 100%; width: 100%; background: rgba(0,0,0,0.5); left: 0; top: 0; display: none;} #modalB {position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none;} #modalB div {display: inline-block;} #modalB img {height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modalB img:hover {opacity: 1;} .descr {position: relative; width: 180px; padding: 0 0 0 70px ;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 1A <input type="text" class="field" id="field1A" /> <br> 1B <input type="text" class="field" id="field1B" /> <br> 2A <input type="text" class="field" id="field2A" /> <br> 2B <input type="text" class="field" id="field2B" /> <br> 3A <input type="text" class="field" id="field3A" /> <br> 3B <input type="text" class="field" id="field3B" /> <div id="bg"></div> <div id="modal"> <div>Select an animal !</div> <br><br> <div> <img src="http://www.bestcatanddognutrition.com/wp-content/uploads/2011/06/cat-teeth.jpg" /><br> <span class="descr">cat</span> </div> <div> <img src="https://www.what-dog.net/Images/faces2/main009.jpg" /><br> <span class="descr">dog</span> </div> <div> <img src="https://s3.amazonaws.com/objects.artspan.com/member/mbaldwin/500/137411.jpg" /><br> <span class="descr">cow</span> </div> </div> <div id="bgB"></div> <div id="modalB"> <div>Select an animal !</div> <br><br> <div> <img src="http://www.bestcatanddognutrition.com/wp-content/uploads/2011/06/cat-teeth.jpg" /><br> <span class="descr">cat</span> </div> <div> <img src="https://www.what-dog.net/Images/faces2/main009.jpg" /><br> <span class="descr">dog</span> </div> <div> <img src="https://s3.amazonaws.com/objects.artspan.com/member/mbaldwin/500/137411.jpg" /><br> <span class="descr">cow</span> </div> </div>
Thanks 谢谢
You can store the id in a variable. 您可以将ID存储在变量中。 Set it once you open the model and use it when you are setting the value.
打开模型后进行设置,并在设置值时使用它。
var inputAId = "";
$("input[id^='field'][id$='A']").on('click', function() {
// Set it here...
inputAId = this.id;
$("#bg").fadeIn(400, function() {
$("#modal").fadeIn(400);
});
});
$("#modal img").on('click', function() {
var text = $(this).siblings('.descr').text();
$("#modal").fadeOut(400, function() {
$("#bg").fadeOut(400, function() {
// Later use it here...
$("#" + inputAId).val(text);
});
});
});
Store a reference to the jQuery wrapped element: 存储对jQuery包装元素的引用:
var $theTarget; $("input[id^='field'][id$='A']").on('click', function() { $theTarget = $(this); $("#bg").fadeIn(400, function() { $("#modal").fadeIn(400); }); }); $("input[id^='field'][id$='B']").on('click', function() { $theTarget = $(this); $("#bgB").fadeIn(400, function() { $("#modalB").fadeIn(400); }); }); $("#modal img").on('click', function() { var text = $(this).siblings('.descr').text(); $("#modal").fadeOut(400, function() { $("#bg").fadeOut(400, function() { $theTarget.val(text); }); }); }); $("#modalB img").on('click', function() { var text = $(this).siblings('.descr').text(); $("#modalB").fadeOut(400, function() { $("#bgB").fadeOut(400, function() { $theTarget.val(text); }); }); });
.field { margin: 10px; } #bg { position: fixed; height: 100%; width: 100%; background: rgba(0, 0, 0, 0.5); left: 0; top: 0; display: none; } #modal { position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none; } #modal div { display: inline-block; } #modal img { height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modal img:hover { opacity: 1; } #bgB { position: fixed; height: 100%; width: 100%; background: rgba(0, 0, 0, 0.5); left: 0; top: 0; display: none; } #modalB { position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none; } #modalB div { display: inline-block; } #modalB img { height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modalB img:hover { opacity: 1; } .descr { position: relative; width: 180px; padding: 0 0 0 70px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 1A <input type="text" class="field" id="field1A" /> <br> 1B <input type="text" class="field" id="field1B" /> <br> 2A <input type="text" class="field" id="field2A" /> <br> 2B <input type="text" class="field" id="field2B" /> <br> 3A <input type="text" class="field" id="field3A" /> <br> 3B <input type="text" class="field" id="field3B" /> <div id="bg"></div> <div id="modal"> <div>Select an animal !</div> <br><br> <div> <img src="http://www.bestcatanddognutrition.com/wp-content/uploads/2011/06/cat-teeth.jpg" /><br> <span class="descr">cat</span> </div> <div> <img src="https://www.what-dog.net/Images/faces2/main009.jpg" /><br> <span class="descr">dog</span> </div> <div> <img src="https://s3.amazonaws.com/objects.artspan.com/member/mbaldwin/500/137411.jpg" /><br> <span class="descr">cow</span> </div> </div> <div id="bgB"></div> <div id="modalB"> <div>Select an animal !</div> <br><br> <div> <img src="http://www.bestcatanddognutrition.com/wp-content/uploads/2011/06/cat-teeth.jpg" /><br> <span class="descr">cat</span> </div> <div> <img src="https://www.what-dog.net/Images/faces2/main009.jpg" /><br> <span class="descr">dog</span> </div> <div> <img src="https://s3.amazonaws.com/objects.artspan.com/member/mbaldwin/500/137411.jpg" /><br> <span class="descr">cow</span> </div> </div>
This is more elegant in my opinion 我认为这更优雅
$(".field").on('click', function() { $("#modal img").data("currID", this.id); $("#bg").fadeIn(400, function() { $("#modal").fadeIn(400); }); }); $("#modal img").on('click', function() { var text = $(this).siblings('.descr').text(), inputAId = $(this).data("currID"); console.log(inputAId) $("#modal").fadeOut(400, function() { $("#bg").fadeOut(400, function() { $("#" + inputAId).val(text); $("#modal img").data("currID", ""); }); }); });
.field { margin: 10px; } #bg { position: fixed; height: 100%; width: 100%; background: rgba(0, 0, 0, 0.5); left: 0; top: 0; display: none; } #modal { position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none; } #modal div { display: inline-block; } #modal img { height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modal img:hover { opacity: 1; } #bgB { position: fixed; height: 100%; width: 100%; background: rgba(0, 0, 0, 0.5); left: 0; top: 0; display: none; } #modalB { position: absolute; height: 300px; width: 600px; top: 50%; left: 50%; margin-top: -150px; margin-left: -300px; background: #fff; display: none; } #modalB div { display: inline-block; } #modalB img { height; 180px; width: 180px; opacity: 0.8; cursor: pointer; } #modalB img:hover { opacity: 1; } .descr { position: relative; width: 180px; padding: 0 0 0 70px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 1A <input type="text" class="field" id="field1A" /> <br> 1B <input type="text" class="field" id="field1B" /> <br> 2A <input type="text" class="field" id="field2A" /> <br> 2B <input type="text" class="field" id="field2B" /> <br> 3A <input type="text" class="field" id="field3A" /> <br> 3B <input type="text" class="field" id="field3B" /> <div id="bg"></div> <div id="modal"> <div>Select an animal !</div> <br><br> <div> <img src="https://www.petmd.com/sites/default/files/petmd-cat-happy.jpg" /><br> <span class="descr">cat</span> </div> <div> <img src="https://www.what-dog.net/Images/faces2/main009.jpg" /><br> <span class="descr">dog</span> </div> <div> <img src="https://s3.amazonaws.com/objects.artspan.com/member/mbaldwin/500/137411.jpg" /><br> <span class="descr">cow</span> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.