2016-07-10 27 views
3

問題很簡單,但由於某種原因,我無法修復它。 這是href標記,將打開模式框。jquery在傳遞數據時點擊不工作

<center><a href="javascript:void();" class="btn-home" data="<?php echo $cid;?>" data-toggle="modal" data-target="#ApplyModal" name="btn-classified" id="btn-classified" href="#">Apply</a></center> 

這裏是jquery從數據屬性中獲取id。

<script type="text/javascript"> 
$('document').ready(function() 
{ 
    $(document).on('click', '#btn-classified', function() { 
    //$("#btn-classified").on("click", function() { 
    //$("#btn-classified").click(function() { 
    var myvar1 = $(this).data('data'); 
    alert(myvar1); 

}); 
}); 
</script> 

出於某種原因,如果我使用$(document).on('click', '#btn-classified', function() { ,如果我使用$("#btn-classified").on("click", function() {然後我得到未定義我沒有得到任何輸出。

+2

.data('data')將使用屬性data-data =「」,這就是爲什麼您需要使用Rui的答案 – progysm

回答

3

要獲得<a>元素的「數據」屬性使用jQuery的.attr()功能

$('document').ready(function() { 
 
    $(document).on('click', '#btn-classified', function() { 
 
     var myvar1 = $(this).attr('data'); // .attr() to get attribute of an element 
 
     alert(myvar1); 
 
    }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href='#' id='btn-classified' data='This an element of DOM'>Get this DATA value</a>

你的代碼得到了一個未定義的事件click當你到一個元素調用函數之後存在。

你需要表現你的代碼的邏輯,jQuery的你想使用

$(document).ready(function(){ 
//your functions with selectors of DOM 
}) 

或使用jQuery的.on()功能的事件。

$(document).on('click', '.mainButton', function(){ 
//your code 
}) 
+0

感謝您的回答。投了票。 – Ironic

+0

謝謝你。如果這個答案適用於你選擇一個正確的 –

1

你想在你的HTML改變datadata-id。這樣,你可以在你的JavaScript訪問數據的屬性,像這樣:

$('#btn-classified').on('click', function() { 
    alert($(this).data('id')); 
}); 

$(this).data('data')居然會想到data-data="<?=$someId?>"在你的HTML。

+0

謝謝你的答案。投了票。 – Ironic

3

你有兩個hrefs - 一個說javscript:void();另一個有散列(#)刪除一個。那麼你不會得到未定義的。

+0

這不是問題所在。問題是嘗試使用不存在的密鑰訪問數據屬性。 – 1sloc

+0

@JethroVanThuyne將它指向兩個位置並不能使事情混淆。一個href仍然應該被刪除 –

+1

好的趕上我錯過了那一個。 – Ironic

1

根據文檔https://api.jquery.com/data/,如果需要通過.data函數提取屬性,則該屬性應該是data-data 。因爲函數。數據被用來存儲與匹配元素相關聯的任意數據或返回值

$('document').ready(function() 
 
{ 
 
$(document).on('click', '#btn-classified', function() { 
 
//$("#btn-classified").on("click", function() { 
 
//$("#btn-classified").click(function() { 
 
var myvar1 = $(this).data('data'); 
 
alert(myvar1); 
 
}); 
 
});
<script data-require="jquery" data-semver="3.0.0" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script> 
 
<body> 
 
<center> 
 
    <a href="#" class="btn-home" data-data="123" data-toggle="modal" data-target="#ApplyModal" name="btn-classified" id="btn-classified" >Apply 
 
    </a> 
 
    </center> 
 
</body>

+0

感謝您的回答。投了票。 – Ironic

1

使用.attr(「數據」),而不是。數據(「數據」)的功能在匹配元素集中第一個元素的指定數據存儲區中。

+0

感謝您的回答。投了票。 – Ironic