是否可以使用$(this)的全局变量?

时间:2013-06-27 23:29:31

标签: javascript jquery global-variables this

我有一系列点击事件,我想抓住他们各自兄弟的文字。

在这种情况下,我将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);
})

2 个答案:

答案 0 :(得分: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);
})

答案 1 :(得分: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);
})