我正在尝试使用jQuery Find重新显示隐藏的字词。
当我点击#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;
int sum (string filename);
int main() {
string filename;
cout << "Enter the name of the input file: ";
cin >> filename;
cout << "Sum: " << fileSum(filename) << endl;
return 0;
}
int sum(string filename) {
int num = 0;
int sum = 0;
ifstream in;
in.open(filename.c_str());
if(!in.is_open()) {
cout << "Error opening " << filename << endl;
return 1;
}
in >> num;
cout << "File contains the values:" << endl;
while(in.good()) {
sum += num;
cout << num << " ";
in >> num;
}
if(!in.eof()) {
cout << "Error" << endl;
return 1;
}
return sum;
}
字时,它们会被附加到Div1
并隐藏Div2
。
当我点击Div1
字时,它们将被删除并在Div2
中重新显示。
唯一不起作用的是Div1
中重新出现的词。
我该如何解决这个问题?
我已尝试使用Div1
传递已点击的元素。查找说它接受一个元素,这就是我传递给它的内容:find()
.find( element )
在 $('#Div1').on('click', 'li', function () {
$('#Div2').append('<span>' + $(this).html() + '</span>');
$(this).hide();
});
$('#Div2').on('click', 'span', function (e) {
console.log($(this)); // [span, context: span]
$('#Div1').find($(this)).show();
$(this).remove();
});
中,我是控制台记录元素,显示:
Div2
答案 0 :(得分:1)
在Div2
中,您无法使用span
选择器从第一个div
中查找元素。您可以使用:contains()
选择器从Div1
中选择该元素(如果Div1
有许多具有相同内容的li
,则会失败)
$('#Div1').on('click', 'li', function() {
$('#Div2').append('<span>' + $(this).html() + '</span>');
$(this).hide();
});
$('#Div2').on('click', 'span', function(e) {
var text = this.innerText;
$('#Div1 :contains(' + text + ')').show();
$(this).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="Div1">
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
</div>
<div id="Div2"></div>
答案 1 :(得分:0)
感谢adeneo,想出了这个:
$('#Div1').on('click', 'li', function () {
$('#Div2').append('<span data-id="' + $(this).data('id') + '">' + $(this).html() + '</span>');
$(this).hide();
});
$('#Div2').on('click', 'span', function (e) {
$('#Div1').find('[data-id="' + $(this).data('id') +'"]').show();
$(this).remove();
});
答案 2 :(得分:0)
该行:
$('#Div1').find($(this)).show();
正在寻找#Div1
中的实际点击元素(它不会出现,因为它是#Div2
点击),而不是包含与其相同文本的元素。
将其更改为:
$('#Div1').find(':contains('+$(this).text()+')').show();