我正在加载一个显示多个元素的php页面,具体取决于用户(因此我不知道将显示多少项)。这些元素看起来像:
<div id='container_feed'>
<div id='feed_element' data-userid='4'>Random Dude</div>
<div id='feed_element' data-userid='5'>Random Dude 2</div>
</div>
我想在每个div上添加一个click()事件,并根据其用户ID HTML5标记加载一个页面.load()
我尝试了child(),each()和其他一些方法,但没有成功......
如何添加此活动?
感谢。
答案 0 :(得分:3)
为什么不直接委托所有点击:
/* You could also use '>div' if you can't guarantee the class name */
$('#container_feed').on('click', '.feed-element' , function() {});
这样,您最初只添加一个事件,但内部的所有div都将由click事件处理。无需使用.children
或.each
甚至$('#container_feed .feed-element')
遍历每个元素。
代表团是你的朋友。
答案 1 :(得分:2)
首先,不要使用同名的多个ID。使用CSS - class
。
然后在您的点击功能中访问用户ID:
代码示例:
$("div.feed_element").click(function(e) {
var clickedUserId = $(this).data('userid');
$('.userdata-container').load('ajax/userpage_' + clickedUserId +'.html');
});
对应的HTML:
<div id='container_feed'>
<div class='feed_element' data-userid='4'>Random Dude</div>
<div class='feed_element' data-userid='5'>Random Dude 2</div>
</div>
<div class='userdata-container'>
<!-- The Ajax Code is loaded into this container -->
</div>
答案 2 :(得分:1)
你不能为不同的元素拥有相同的id,这是id的一个点(它应该是唯一的)。使用类而不是主div中的所有div子项
$('#container_feed div').on('click',function(){
// do something, the the userid data, load the page somewhere, etc...
})
或使用课程
HTML:
<div id='container_feed'>
<div class='feed_element' data-userid='4'>Random Dude</div>
<div class='feed_element' data-userid='5'>Random Dude 2</div>
</div>
JS:
$('.feed_element').on('click',function(){
// do something, the the userid data, load the page somewhere, etc...
})
较新版本的jquery recomends“on('click',function(){})”而不是“click(function(){})”,我猜“click”将在以后的某个时候被弃用“也可以取代”live()“
答案 3 :(得分:0)
试试这样..
$("div[id='feed_element']").click(function() {
// Your stuff
});
您应该使用class,因为ID始终用于唯一标识。
答案 4 :(得分:0)
首先,我不会对所有div使用相同的feed_element id。
试试这个
$('#container_feed').children().each(function(){
if($(this).attr('data-userid') == # you want){
$(this).click(function(){
//your stuff here
});
}
});
答案 5 :(得分:0)
$(".feed_element").click(function(event) {
var userId = $(this).attr('data-userid');
//make your ajax call.
});