我遇到了一些问题。我试着知道该怎么办,但......没事......我做错了什么,我不知道是什么......
我有一个给JSON的ajax请求。
我收到一些带有值的属性。其中一个是HTML内部:
"<p>Title</p>
<p>Category</p>
<p>First p.</p>
<p>Second p.</p>"
我想在另一个变量中获得“Title”,在另一个变量中获得“Category”。另一个变量中的“第一个p”和“第二个p”。
我做了类似的事,但没有任何事情发生。
tTitle = $(textThumb).find("p:nth-child(0)").html();
tCat = $(textThumb).find("p:nth-child(1)").html();
tText = $(textThumb).remove("p:nth-child(0)","p:nth-child(1)").html();
所有这些都变得不确定。
如果我打印 textThumb ,其他参数中的其他值也可以,这就是我不知道该怎么想的问题
谢谢,
答案 0 :(得分:2)
尝试这样的事情:
var $p = $(textThumb).filter("p"),
tTitle = $p.eq(0).text(),
tCat = $p.eq(1).text();
主要是使用.filter()
而不是.find()
,因为后者会查找作为后代的元素,但您想要的元素位于顶层。
“另一个变量中的”第一个p“和”第二个p“。”
如果您的意思是希望这两个段落中的文本都放在同一个变量中,那么可能是:
var tText = $p.slice(2).text();
答案 1 :(得分:1)
var tree = $(textThumb);
tTitle = tree[0].innerText;
tCat = tree[1].innerText;
tText = tree[2].innerText + tree[3].innerText
答案 2 :(得分:0)
除了使用html作为值返回JSON之外,还有更好的方法可以解决你所做的事情 - 也就是说,你需要做的是将带有一个父节点的字符串放入jQuery选择器。
$('<div><p>Hi</p><p>Hi Again</p></div>').find('p').eq(0).text() // 'Hi!'
或使用nth-child()选择器(应从1开始)
$('<div><p>Hi</p><p>Hi Again</p></div>').find('p:nth-child(1)').text() // 'Hi!'
在您的情况下$('<div>'+textThumb+'</div>')
...