使用jQuery find()。show()来显示子项

时间:2016-01-10 02:34:17

标签: javascript jquery

我正在尝试使用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

3 个答案:

答案 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>

Fiddle here

答案 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();