發佈更新以顯示正在使用的實際代碼,其中一個評論是公開的,在jquery中無效,如果是的話,我應該在創建函數時放棄公開。綁定元素上的jquery觸發事件
我有一個簡單的查看頁面,包含一個主數據和一些詳細記錄。
腳本如下所示:
$(document).ready(function(){
initialise();
$("#order_list").on("dblclick",".show_order",function(){
alert('click event initiated for show_order');
});
function initialise(){
$('#order_list').empty();
$('#drop_list').empty();
$('#info').empty();
var drop_id = "<?php echo $this_drop ?>";
$.post('<?php echo site_url("schedules/get_drop");?>',{'drop_id':drop_id},
function(response){
$.each(response,function(key,val){
drop_info = '';
drop_info += 'DROP ID: ' + val.drop_id + '</br>';
drop_info += 'DELIVERY POINT: '+val.destination + '</br>';
drop_info += 'NO OF ORDERS: ' + val.noOfOrders + ' ' + 'ESTIMATED WEIGHT: ' + val.weight + ' ' + ' ESTIMATED TRAVEL DISTANCE: '+ parseFloat(val.distance)+ ' KM';
$('#drop_info').empty();
$('#drop_info').append(drop_info);
});
},'json');
//populate matching order info
$.post("<?php echo site_url('schedules/get_drop_orders');?>",{'drop_id':drop_id},
function(data){
$.each(data,function(key,val){
content = '';
content += "<div class='show_order' id='"+val.order_id+"' data-weight='"+val.est_weight+"' data-qty='"+val.qty+"' data-distance='"+val.est_distance+"' data-origin='"+val.s1lat+','+val.s1lon+"' data-destination='"+val.s2lat+','+val.s2lon+"'>";
content += "<a href='#' id='"+val.order_id+"'> Order No: "+val.order_id+"</a> Collection Date: "+val.req_col_time.substr(0,10)+"</br>";
content += "Collection Point: <a href='#' id='"+val.site1id+"'>"+val.collection+"</a></br>";
content += "Delivery Point: <a href='#' id='"+val.site2id+"'>"+val.destination+"</a></br>";
content += "</div>";
$('#order_list').append(content);
});
},'json');//end of post loop
$("#order_list").trigger("dblclick");
}
});
</script>
玩這個我可以點擊觸發所添加的元素,但我不能讓點擊是來自初始化事件來觸發某種原因
回答
這是因爲添加了事件處理該事件被觸發後
$(document).on('click', '.show_order', function() {
console.log('i was clicked', this);
});
//call the initialise function to populate the info through ajax calls
initialise();
function initialise() {
var content = '';
content += '<div class="show_order" id="dynamically generated">item 1</div>';
content += '<div class="show_order" id="dynamically generated">item 2</div>';
content += '<div class="show_order" id="dynamically generated">item 3</div>';
$('body').append(content);
$('.show_order').trigger('click');
}
演示:Fiddle
在這種情況下,你需要使用事件代表團,因爲當事件處理程序註冊的目標元素沒有被添加到DOM
commons guys使用'setTimeout()'得到2個upvotes的解決方案,在得到第一個downvote之後解決它 –
到目前爲止觸發器已被解僱謝謝大家,現在的問題是,它只能在初始化時觸發一次,而不是爲每個元素添加 –
@TerenceBruwer在初始化後必須觸發哪個元素 –
試試這個,
$(document).ready(function() {
//call the initialise function to populate the info through ajax calls
initialise();
function initialise() {
var content = '';
content += '<div class="show_order" id="dynamically generated">item 1</div>';
content += '<div class="show_order" id="dynamically generated">item 2</div>';
content += '<div class="show_order" id="dynamically generated">item 3</div>';
$('body').append(content);
$('body').on('click','.show_order',function(){
alert('i was clicked');
});
$('.show_order').trigger('click');
}
});
仍然不能正常工作http://jsfiddle.net/arunpjohny/YML7S/2/ –
檢查你的控制檯.......... –
http: //jsfiddle.net/YML7S/3/ –
試試這個
initialise();
function initialise(){
content = '';
content += '<div class="show_order" id="dynamically generated">item 1</div>';
content += '<div class="show_order" id="dynamically generated">item 2</div>';
content += '<div class="show_order" id="dynamically generated">item 3</div>';
$('body').append(content);
$(document).on('click','.show_order',function(){
alert('i was clicked');
});
$('.show_order').trigger('click');
}
仍然無法正常工作http:// jsfiddle。net/arunpjohny/YML7S/2/ –
嘗試這樣的事情,FIDDLE
$('body').on('click', '.show_order', function() {
alert('i was clicked');
});
initialise();
我跑了小提琴觸發器被解僱每個元素被抱怨抱歉 –
,因爲$('。show_order')將獲得三個元素,所以三個事件被觸發 –
給予一定的超時初始化函數,以便調用的函數之前,DOM是加載並單擊事件被綁定到元素
試試這個
$(document).ready(function(){
setTimeout(function(){initialise();},100);
$('body').on('click','.show_order',function(){
alert('i was clicked');
});
function initialise(){
content = '';
content += "<div class='show_order' id='dynamically generated'>item 1</div>";
content += "<div class='show_order' id='dynamically generated'>item 2</div>";
content += "<div class='show_order' id='dynamically generated'>item 3</div>";
$('body').append(content);
$('.show_order').trigger('click');
}
});
- 1. 觸發綁定到元素的所有jQuery事件
- 2. jQuery綁定事件觸發事件
- 3. JQuery觸發元素綁定本身
- 4. jQuery - 創建元素時觸發事件
- 5. jQuery創建元素觸發onclick事件
- 6. JQuery Mobile swiperight事件觸發先前觸發的listview元素
- 7. JQuery:將多個元素的多個觸發器綁定到一個事件
- 8. 允許其他綁定元素事件先觸發嗎?
- 9. jQuery,新創建的元素上的觸發器更改事件
- 10. jQuery的事件動態創建的元素上不觸發
- 11. jQuery .click()在不存在的html元素上觸發事件
- 12. Backbone jQuery只能在Template中的元素上觸發事件?
- 13. 在jquery綁定事件上的RequireJS不會觸發方法
- 14. 綁定觸發元素父集合的
- 15. jQuery單擊TD元素上的事件而不觸發嵌套表TD元素
- 16. 元素上的Jquery綁定事件失敗
- 17. 觸發動態元素上的自定義事件
- 18. 在Ajax響應元素上觸發JQuery事件
- 19. 在CSS3上使用JQuery觸發事件:在僞元素之後?
- 20. jquery綁定事件不會在手機上觸發
- 21. Javascript/JQuery - 無法獲取keydown事件以觸發特定元素
- 22. 當3個特定元素可見時觸發jQuery事件
- 23. 在jquery中觸發事件dragstart時重定位元素
- 24. 上的jQuery()事件綁定
- 25. 正在偵聽特定元素上的事件,導致該事件在不相關的元素上觸發?
- 26. 在jQuery中綁定自定義事件時的觸發代碼
- 27. 綁定時觸發的骨幹事件
- 28. 我的jQuery插件事件沒有觸發多個元素
- 29. 使用JQuery獲取觸發事件的元素的類
- 30. jQuery:觸發加載數據的元素的本地AJAX事件
javascript中沒有公共函數,這是一個語法錯誤 – adeneo
content + ='「