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);
})
4

2 回答 2

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);
})
于 2013-06-27T23:31:45.773 回答
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);
})
于 2013-06-27T23:38:50.270 回答