2014-05-11 28 views
54

Trong html của tôi, tôi có một yếu tố span:Nhận dữ liệu thuộc tính

<span class="field" data-fullText="This is a span element">This is a</span> 

Và tôi muốn để có được những thuộc tính data-fullText. Tôi đã thử hai cách này, nhưng họ đã không làm việc (cả hai trở undefined):

$('.field').hover(function() { 
    console.log('using prop(): ' + $(this).prop('data-fullText')); 
    console.log('using data(): ' + $(this).data('fullText')); 
}); 

Sau đó, tôi đã tìm kiếm và tìm thấy những câu hỏi này: How to get the data-id attribute?jquery can't get data attribute value.
Câu trả lời của cả hai là "Use .attr('data-sth') or .data('sth')".
Tôi biết rằng .attr() không được dùng nữa (trong jquery-1.11.0, mà tôi sử dụng), tuy nhiên, tôi đã thử.
Và nó đã hoạt động!

Ai đó có thể giải thích lý do tại sao?

+1

'$ (this) .data ('toàn văn') 'sẽ hoạt động như các thuộc tính thấp hơn. Nhưng thực tế, bạn nên đặt nó là: 'data-fulltext' hoặc' data-full-text'. Đối với sau này, sau đó: '$ (this) .data ('fullText')' sẽ hoạt động, sử dụng cú pháp trường hợp lạc đà –

+0

FYI, 'Tôi biết điều đó.attr() không được chấp nhận 'attr() không được dùng nữa, đây là phương thức sử dụng để thiết lập/nhận thuộc tính, không phải thuộc tính –

+0

Vậy tôi nên sử dụng gì -' prop' hoặc 'attr'? –

Trả lời

118

Bạn có thể sử dụng .attr() chức năng:

$(this).attr('data-fullText') 

hoặc nếu bạn chữ thường tên thuộc tính:

data-fulltext="This is a span element" 

sau đó bạn có thể sử dụng .data() chức năng:

$(this).data('fulltext') 

Hàmmong đợi và chỉ hoạt động với tên thuộc tính chữ thường.

+4

Tuyệt vời, thì tất cả những gì bạn phải làm là viết thường tên thuộc tính của bạn vì đó là cách hàm .data hoạt động và cách hàm mong muốn các thuộc tính của bạn được đặt tên. –

+3

Cảm ơn, nó hoạt động hoàn hảo! Bây giờ tôi không có 'dữ liệu 'nên chỉ có chữ cái thường :) –

+0

bạn không phải là người đầu tiên và không phải là người cuối cùng bị mắc kẹt trên dữ liệu không xác định vì giới hạn chữ thường –

4

1. Hãy thử điều này: .attr()

$('.field').hover(function() { 
    var value=$(this).attr('data-fullText'); 
    $(this).html(value); 
}); 

DEMO 1:http://jsfiddle.net/hsakapandit/Jn4V3/

2. Hãy thử điều này: .data()

$('.field').hover(function() { 
    var value=$(this).data('fulltext'); 
    $(this).html(value); 
}); 

DEMO 2:http://jsfiddle.net/hsakapandit/Jn4V3/1/

+0

http://stackoverflow.com/questions/15070277/why-jquery-1-9-attr-method-not-deprecated – mrdeveloper

1

này làm việc cho tôi

$('.someclass').click(function() { 
    $varName = $(this).data('fulltext'); 
    console.log($varName); 
}); 
0

Thay đổi ID và dữ liệu thuộc tính như bạn muốn!

<select id="selectVehicle"> 
     <option value="1" data-year="2011">Mazda</option> 
     <option value="2" data-year="2015">Honda</option> 
     <option value="3" data-year="2008">Mercedes</option> 
     <option value="4" data-year="2005">Toyota</option> 
    </select> 

$("#selectVehicle").change(function() { 
    alert($(this).find(':selected').data("year")); 
}); 

Dưới đây là ví dụ làm việc: https://jsfiddle.net/ed5axgvk/1/

+0

Câu hỏi là về các thuộc tính dữ liệu và không liên quan gì đến các lựa chọn hoặc bất kỳ hình thức đầu vào nào khác. –

+0

Ví dụ về các thuộc tính dữ liệu. Đọc lại lần nữa! – curiousBoy

+0

Ồ, tôi hiểu rồi. Có lẽ nó sẽ được rõ ràng hơn nếu bạn đã minh họa câu trả lời của bạn với khoảng tĩnh trong câu hỏi, thay vì sử dụng một trường đầu vào. Điều đó đã ném tôi. Lấy làm tiếc. –

0

Đây là những gì tôi đã đưa ra:

\t \t $(document).ready(function(){ 
 
\t \t 
 
\t \t $(".fc-event").each(function(){ 
 
\t \t 
 
\t \t \t console.log(this.attributes['data'].nodeValue) \t 
 
\t \t }); 
 
    
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div id='external-events'> 
 
\t \t \t <h4>Booking</h4> 
 
\t \t \t <div class='fc-event' data='00:30:00' >30 Mins</div> 
 
\t \t \t <div class='fc-event' data='00:45:00' >45 Mins</div> 
 
</div>

Các vấn đề liên quan