我正在使用 Jquery Ajax 和 php,我在控制器中使用 Ajax,我有 php 回圈和內部回圈我有“showmore 按鈕”,我有“ShowMore”按鈕和“最后一條評論”(來自 db),所以每當我點擊“ShowMore”按鈕......它的隱藏和“新評論”和新的“ShowMore”按鈕(HTML)將作為Ajax Resonse出現但問題是每當我第一次點擊“ShowMore”按鈕然后它的作業和資料(新評論和顯示更多按鈕)以 ajax 回應的形式出現,但如果我下次點擊“ShowMore”(以 Ajax 回應的形式出現),則沒有任何效果,我嘗試使用以下功能
$('.show_more').unbind('click').bind('click', function (e)
使用上述功能“第二次單擊”不起作用意味著“顯示更多按鈕”(作為ajax回應出現)不起作用如果嘗試使用以下代碼,則多次函式作業/執行
$(document).on('click','.show_more',function()
這是我的回圈代碼和腳本代碼,我錯在哪里?我該如何解決這個問題?提前致謝。
function fetch()
{
$FeedId; (dynamic)
$FeedData = $this->M_main->GetFeedData(); // getting feed data from database
foreach($FeedData as $feeds)
{
if($feeds['flag']=="feed")
{
$GetFeedComments = $this->M_main->GetFeedsComment($FeedId);
$TotalFeedsComments=$GetFeedComments['TotalRows'];
if($TotalFeedsComments>1)
{
$Loads='<div class="show_more_main" id="show_more_main'.$postID.'">
<input type="hidden" name="fixs" value="'.$postID.'" id="fixs">
<input type="hidden" name="MinValue" value="'.$postID.'" id="MinValue">
<input type="hidden" name="FeedIdd" value="'.$FeedId.'" id="FeedIdd">
<input type="hidden" name="MaxValue" value="'.$postID.'" id="MaxValue">
<span id='.$postID.' data-val='.$postID.' data-status='.$postID.' class="show_more" title="Load more posts" data-feds='.$FeedId.'>Show more</span>
<span class="loding" style="display: none;"><span class="loding_txt">Loading...</span></span>
</div>';
}
}
}
$pathss= base_url()."Main/GetFeedCommentsById";
echo "
<script>
$('.show_more').unbind().click(function(e) {
e.preventDefault();
var ID = $(this).attr('id');
var vals=$(this).data('val');
var feds=$(this).data('feds');
$('.show_more').hide();
$.ajax({
type:'POST',
url:'".$pathss."',
data:{id:ID, vals:vals},
success:function(html){
$('#show_more_main' ID).remove();
$('.postList' feds).append(html);
}
});
});
</script>
";
uj5u.com熱心網友回復:
問題是您正在洗掉 ajax 成功訊息上的 html 節點,并且事件偵聽器消失了。
您應該再次將偵聽器添加到新節點;
<script>
// Assign the event listener to a variable, to reuse it
let myEventListenerFunction = function(e) {
e.preventDefault();
var ID = $(this).attr('id');
var vals=$(this).data('val');
var feds=$(this).data('feds');
$('.show_more').hide();
$.ajax({
type:'POST',
url:'".$pathss."',
data:{id:ID, vals:vals},
success:function(html){
$('#show_more_main' ID).remove();
$('.postList' feds).append(html);
// Add event to a new node
$('.show_more').unbind().click(myEventListenerFunction);
}
});
}
$('.show_more').unbind().click(myEventListenerFunction);
</script>
uj5u.com熱心網友回復:
您的代碼存在一些問題,但如果您只是想讓它作業,因為我認為最好的方法是將 javascript 部分與其他部分分開。實作此目的的一種方法是將此腳本添加到您的頁面中到單獨的 js 檔案中
<script>
$(document).on('click','.show_more',function(e) {
e.preventDefault();
var $self = $(this);
var ID = $self.attr('id');
var vals=$self.data('val');
var feds=$self.data('feds');
$('.show_more').hide();
var url = $self.data('url');
$.ajax({
type:'POST',
url: url,
data:{id:ID, vals:vals},
success:function(html){
$self.remove();
$('.postList' feds).append(html);
}
});
});
</script>
在 php 部分你必須有一個這樣的屬性
$Loads='<div id="show_more_main'.$postID.'" data-url="'.$pathss.'">...</div>';
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/341610.html
標籤:javascript php 查询 阿贾克斯 代码点火器
上一篇:Javascript:我正在嘗試在用戶在頁面上滾動時創建滾動,但我一直遇到“moveImaeCalc”的NaN錯誤
