2016-12-03 61 views
1

您好我有以下的html:調用與變量ID鏈接jQuery函數點擊

<table class="table table-bordered"> 
     <thead> 
      <tr> 
      <th>Docket No. #</th> 
      <th>Del Date</th> 
      <th>Box</th> 
      <th>Status</th> 
      <th>Update</th> 
      </tr> 
     </thead> 
     <tbody id="dsr-data"> 
     </tbody> 
    </table> 

如何定義jQuery函數調用函數updateStatus和deleteStatus jQuery的?我已經寫了下面的代碼,但它不是工作,這是行不通的:

<script type="text/javascript"> 
$(document).ready(function() { 
$(function() 
{ 
    $.getJSON("DsrList.php",{page:"dsrlist",request: 
    "dsrData"},function(json) 
    { 
     var response = json.response; 
     var screen = response.screen; 
     var session = response.session; 
     var branch = session.branch; 
     var username = session.username; 
     var dsrNo = session.dsr_no; 
     var dsrData = session.dsrData; 
     if(screen == "dsrlist"){ 
      $("#dsr-branch").text(branch); 
      $("#dsr-user").text(username); 
      $("#dsr_no").text(dsrNo); 
      $("#dsr-data").html(dsrData); 
     } 
    }); 
}); 

$(function(){ 

$.fn.extend({ 
uploadStatus: function() { 
var id = $(this).attr('id'); 
id = id.replace("upload-", ""); 
    alert(id); 
} 
}); 

$.fn.extend({ 
deleteStatus: function() { 
var id = $(this).attr('id'); 
id = id.replace("delete-", ""); 
    alert(id); 
} 
}); 

$('.action').on('click', function(e) { 
if($(this).hasClass('upload')) { 
    $(this).uploadStatus(); 
} else { 
    $(this).deleteStatus(); 
} 
}); 

}); 
}); 
</script> 

DsrList.php被填充以下數據:

<tr> 
<td>812210</td> 
<td>03-12-2016</td> 
<td>10</td> 
<td>out for delivery</td> 
<td> 
    <a class="action upload" id="upload-1"> 
    <img src="img/upload.png" alt="Upload"></a> 
    <a class="action delete" id="delete-1"> 
    <img src="img/delete.png" alt="Delete"></a> 
</td> 
</tr> 
<tr> 
<td>812211</td> 
<td>03-12-2016</td> 
<td>20</td> 
<td>out for delivery</td> 
<td> 
    <a class="action upload" id="upload-2"> 
    <img src="img/upload.png" alt="Upload"></a> 
    <a class="action delete" id="delete-2"> 
    <img src="img/delete.png" alt="Delete"></a> 
</td> 
</tr> 

其中$( 「#DSR-數據」)HTML(dsrData );分配。

但點擊更新/刪除圖像我沒有收到警報。

請幫我解決這個問題。 在此先感謝。

回答

0

只是不要在HTML中使用onclick屬性,如你使用jQuery的擴展屬性,你可以使用jQuery的正確,就可以由共同的類action添加類deleteupload

你的HTML應該是這樣的:

<a class="action upload" id="upload-1"> 
    <img src="img/upload.png"> 
</a> 
<a class="action delete" id="delete-1"> 
    <img src="img/delete.png"> 
</a> 

,只是使用jQuery的onClick事件處理程序和方法hasClass知道點擊塊是用於上傳或刪除。爲了更好地理解看下面的代碼:

你可以這樣說:

$(function(){ 
 

 
    $.fn.extend({ 
 
    uploadStatus: function() { 
 
     alert('Upload Block Clicked : id = ' + $(this).attr('id')); 
 
    } 
 
    }); 
 
    
 
    $.fn.extend({ 
 
    deleteStatus: function() { 
 
     alert('Delete Block Clicked: id = ' + $(this).attr('id')); 
 
    } 
 
    }); 
 
    
 
    $(document).on('click', '.action', function(e) { 
 
    if($(this).hasClass('upload')) { 
 
\t $(this).uploadStatus(); 
 
    } else { 
 
     $(this).deleteStatus(); 
 
    } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table class="table table-bordered"> 
 
    <thead> 
 
    <tr> 
 
     <th>Docket No. #</th> 
 
     <th>Del Date</th> 
 
     <th>Box</th> 
 
     <th>Status</th> 
 
     <th>Update</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody id="dsr-data"> 
 
    <tr> 
 
     <td>812210</td> 
 
     <td>2016-12-03</td> 
 
     <td>10</td> 
 
     <td>out for delivery</td> 
 
     <td> 
 
     <a class="action upload" id="upload-1"> 
 
     <img src="img/upload.png" alt="Upload"> 
 
     </a> 
 
     <a class="action delete" id="delete-1"> 
 
     <img src="img/delete.png" alt="Delete"> 
 
     </a> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

希望這有助於!

+0

嗨,謝謝你的幫助。你的代碼獨立工作。但是當用我的代碼杵走時。它不工作。我的表格行是在服務器端動態創建的,使用$(「#dsr-data」).html(dsrData)顯示行。但是,當我評論上面的代碼行,並把手動行你的代碼工作正常。請幫我解決問題(可能是DOM問題)。謝謝 – Shubh

+0

是的,我知道你的代碼不工作,讓我更新我的答案 –

+0

@Shubh - 如果你發現這個答案是正確的和有幫助的,然後接受&upvote這個答案,因爲它激勵我回答這樣的其他問題並幫助他人快速找到正確的答案! –

0

你可以試試這個。

<script> 
    function uploadStatus(id) { 
     alert('id =' + id); 
    } 

    function deleteStatus(id) { 
     alert('id =' + id); 
    } 
</script>