我有一系列点击事件,我想抓住他们各自兄弟的文字。
在这种情况下,我将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);
})
答案 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);
})