2011-09-22 42 views
9

我有幾個頁面上的這些行:jQuery中,如何傳遞被點擊到被稱爲上的onclick事件的方法元素

<div class="save-button" onclick="Save()">Save</div> 

在我Save()方法我想操縱DIV被點擊以調用Save()方法。我如何通過(我認爲$(this)),而不訴諸ID?

非常感謝!

+0

更多信息,如果您想更清晰的答案,但如果保存()方法被綁定到點擊事件,然後是$(這)會工作。 –

+0

Answererd您自己的問題。這將引用最初點擊的元素。 –

回答

24

要麼刪除save()和使用click()抓事件:

<div class="save-button">Save</div> 
<script> 
$('.save-button').click(function() { 
    // Now the div itself as an object is $(this) 
    $(this).text('Saved').css('background', 'yellow'); 
}); 
</script> 

[View output]

或者,如果你堅持使用這種功能save()

<div onClick="save(this)">Save</div> 
<script> 
$(function() { 
    save = function (elm) { 
     // Now the object is $(elm) 
     $(elm).text('Saved').css('background', 'yellow'); 
    }; 
}); 
</script> 

[View output]

EDIT(2015年):.on('click',功能)

<div class="save-button">Save</div> 
<script> 
$('.save-button').on('click', function() { 
    // Now the div itself as an object is $(this) 
    $(this).text('Saved').css('background', 'yellow'); 
}); 
</script> 
+0

我會補充:如果您在錨鏈接上使用第二個「save()方法」,那麼您還必須在函數末尾添加'return;'來取消鏈接操作。 –

2

簡單地稱其爲:$(this)

1

漂亮的直線前進......

$('#myDiv').click(function(){ 
    save($(this)); 
}) 


function save($obj){ 
    $obj.css('border', '1px solid red'); 
} 
1

裏面的 Save()功能 this是指被點擊的DOM元素。 您可以使用$(this)將其轉換爲jQuery對象。

這是指window默認不過,所以你需要通過this爲保存函數的參數:

<div class="save-button" onclick="Save(this)">Save</div> 

function Save(div) { } 

現在裏面保存,可以使用div指代是DIV點擊。

我很困惑如何this表現。此鏈接對我有幫助:http://www.quirksmode.org/js/this.html

+2

不,它沒有。在'Save'裏面,'this'是指'window'。 –

+0

你是對的。爲了讓'this'引用div,你需要將它傳遞給save函數。看我的編輯。 –

+0

此外,你不能簡單地使用'div',它必須在jQuery中作爲一個對象'$(div)'。否則,它不會像$(this)那樣行事。 –

2

在事件處理程序中,this引用了clicked元素。但是,在您從事件處理程序調用的函數內部,即Save,this將引用窗口。

您可以明確設置什麼this應該是指內通過call[MDN](或applySave

onclick="Save.call(this, event || window.event);" 

那麼你可以使用它裏面的功能爲$(this)

function Save(event) { 
    // `this` refers to the clicked element 
    // `$(this)` is a jQuery object 
    // `event` is the Event object 
}; 

因爲你使用的是jQuery,所以你應該做

$('.save-button').click(Save); 

綁定事件處理程序。將標記與邏輯混合並不是一種好的風格。您應該將演示文稿與應用程序邏輯分開。

或者,如果你想Save接受一個元素作爲參數,則只是把它傳遞:

onclick="Save(this);" 

和使用jQuery:

$('.save-button').click(function() { 
    Save(this); 
}); 
相關問題