2017-01-20 100 views
1

我有這樣的代碼:獲取價值的jQuery

<div class="container"> 
    <div class="switchStatus btn-group" data-module="xxx"> 
      <a class="btn btn-primary">Active</a> 
      <a class="btn btn-primary">Inactive</a> 
    </div> 
</div> 

我怎樣才能獲得data-module內容?

其實,我的代碼看起來是這樣,但它不工作:

$('.container').on('click', '.switchStatus a', function() { 
    var module = $(this).data('module'); 
}); 

感謝。

+1

模塊屬性是在父.... 。不是錨點 – epascarello

回答

2

嘗試

var module = $(this).parent().data('module');

+0

'.closest()'幾乎總是比'.parent()'更受歡迎,因爲它不需要特定的層次結構,因此稍後可以輕鬆修改DOM,而無需重新編寫所有JavaScript選擇器。 – mhodges

+0

@mhodges,我同意。然而在這種情況下,父母只是一個包含兩個超鏈接'a'標籤的包裝div,它不應該在部分中改變。 – VHS

+0

我同意你的看法,但是開發人員應該始終致力於儘可能地寫出未來的代碼。沒有很好的理由(尤其是在這種情況下)不這樣做。 – mhodges

1

內的點擊處理程序回調函數,該this context將被綁定到被點擊的<a>元素。要獲得父級,可以使用.closest()方法和選擇器。它可能看起來如下:

$(this).closest("[data-module]").attr("data-module");

0

試試這個,whitout節點 'A'

$('.container').on('click', '.switchStatus', function() { 
    var module = $(this).data('module'); 
    alert(module); 
}); 
1

使用最接近(」 switchStatus。)。

jQuery的設置回調函數的範圍是 回調主題的元件

所以我想這意味着在上選擇參數在這種情況下,元件(.switchStatus一個)

$('.container').on('click', '.switchStatus a', function(event) { 
 
    var module = $(this).closest('.switchStatus').data('module'); 
 
    console.log('My name is ' + module) 
 
    event.stopPropagation() // always good to stop event bubbles after you have used them. 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="switchStatus btn-group" data-module="Spartacus"> 
 
      <a class="btn btn-primary">Active</a> 
 
      <a class="btn btn-primary">Inactive</a> 
 
    </div> 
 
</div>