<a href="/user/SOMEUSERNAME">SOMEUSERNAME</a>
<div class="col s9">
<p id="p_50">Some message</p>
<br>
<br>
<span class="forumtools">
<strong>
<a onclick="quote(\'p#p_50\')">Quote</a>
</strong>
<span class="right">Written SOMEDATE</span>
</span>
</div>
JQuery/JS:
function quote(post) { $(post).text(); }
This works to fetch the posts message, but how do I go about finding the Username?
I have tried using $(post).prev('a').text();
, and $(post).parent().prev('a').text();
, but nothing seems to work.
答案 0 :(得分:1)
你可以在没有jQuery的情况下完成。如果可能,更改html并将当前链接传递给函数,如下所示:
<a onclick="quote(\'p#p_50\', this)">Quote</a>
然后您可以搜索所有链接:
function quote(str, currentLink) {
var allLinks = document.getElementsByTagName("a"); // get all links in document
var index = allLinks.indexOf(currentLink);
if (index > 0) {
var prevLink = allLinks[index-1];
console.log(prevLink); // log it to browser console
} else {
console.log("there is no previous link");
}
}
答案 1 :(得分:0)
通过查看DOM结构,它应该与$(post).parent().prev().text()
一起使用。
替代方式,如何用<div>
包装所有这些,如下所示:XD
<div id="message1">
<a href="/user/SOMEUSERNAME">SOMEUSERNAME</a>
<div class="col s9">
<p id="p_50">Some message</p>
<br>
<br>
<span class="forumtools">
<strong>
<a onclick="quote(\'#message1\')">Quote</a> //change to wrapper id
</strong>
<span class="right">Written SOMEDATE</span>
</span>
</div>
</div>
然后获取帖子文字:$(post).find('#p_50').text();
获取用户名:$(post).find('a:first').text();
答案 2 :(得分:0)
查看您的示例HTML,如果您在Fatal error: Class 'MY_Controller' not found
,只需转到父元素并获取最接近的p
,您应该没问题:
a
答案 3 :(得分:0)
也许使用parent()然后使用previous()
var ancortext = $(post).parent().prev().text();
下面的功能示例。
function username(post) {
return $(post).parent().prev().text();
}
注意:这对我来说很有气味,你的代码非常依赖于这种方式的HTML结构。如果你改变HTML,你的javascript可能会破坏。
我已将您的代码复制到我自己的HTML文档中,并确认上面的jquery方法调用输出所需的结果。如果不是,那么您的源HTML和您发布的源代码会有所不同,或者您的jquery函数与此答案中所述的不同:)
答案 4 :(得分:0)
你的onclick属性是错误的,因为onclick接受javascript,所以值可能是支持js,然后是onclick =“quote('p#p50')
”。
function quote(post) {
var subject = $(post).text();
var user=$(post).parent().prev('a').text();
console.log('posted '+subject+' by '+user);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="/user/SOMEUSERNAME">SOMEUSERNAME</a>
<div class="col s9">
<p id="p_50">Some message</p>
<br>
<br>
<span class="forumtools">
<strong>
<a onclick="quote('p#p_50')">Quote</a>
</strong>
<span class="right">Written SOMEDATE</span>
</span>
</div>