2013-06-27 103 views
0

我有一系列的點擊事件,我想抓住他們各自的兄弟姐妹的文本。

在這種情況下,我將id設置爲$(this).siblings('div').children('p.item_name').text()的輸出,這對於每個項目都是不同的。

有沒有一種方法可以全局設置$(this).siblings('div').children('p.item_name').text(),以便我可以將id分配給相同的變量?

$('.buy').click(function(e){ 
    e.preventDefault(); 
    var id = $(this).siblings('div').children('p.item_name').text(); 
    shoppingClickHandler('buyItem', id); 
}) 

$('.try').click(function(e){ 
    e.preventDefault(); 
    var id = $(this).siblings('div').children('p.item_name').text(); 
    shoppingClickHandler('tryItem', id); 
}) 

$('.suggest').click(function(e){ 
    e.preventDefault(); 
    var id = $(this).siblings('div').children('p.item_name').text(); 
    shoppingClickHandler('suggestItem', id); 
}) 

回答

3

嘗試的功能:

function getId(item) { 
    return $(item).siblings('div').children('p.item_name').text(); 
} 

然後,你可以只是做,例如,

$('.buy').click(function(e){ 
    e.preventDefault(); 
    // Old Version: 
    // var id = $(this).siblings('div').children('p.item_name').text(); 
    // New Version: 
    var id = getId(this); 
    shoppingClickHandler('buyItem', id); 
}) 
+0

美的東西。 – nipponese

1

您可以包裝shoppingClickHandler呼叫,做的ID查找內部的函數:

function dynamicShoppingClickHandler(action, node) { 
    var id = $(node).siblings('div').children('p.item_name').text(); 
    shoppingClickHandler(action, id); 
} 

$('.buy').click(function(e){ 
    e.preventDefault(); 
    dynamicShoppingClickHandler('buyItem', this); 
}) 

$('.try').click(function(e){ 
    e.preventDefault(); 
    dynamicShoppingClickHandler('tryItem', this); 
}) 
相關問題