Mam poniżej przycisk html, który ma zdarzenie onclick
<button onclick="alert("button");" type="button">Button</button>
i następujące js:
$("button").on("click", function(){
alert("jquery");
});
Po wykonaniu jakiegoś kodu js przez jQuery / Javascript, chcę kontynuować z przyciskiem onclick handler np. Jquery alert first, a nie button alert.
Próbowałem tak wielu rzeczy jak "usuń attr i dołącz go po wykonaniu mojego kodu i wywołaj kliknięcie (utknął w pętli, wiemy dlaczego :))" i "wyłącz" kliknij. ale bez powodzenia.
czy to możliwe za pośrednictwem jQuery / javascript?
każda sugestia bardzo ceniona
Dzięki
Odpowiedzi:
0 dla odpowiedzi № 1Trochę podchwytliwe. http://jsfiddle.net/tarabyte/t4eAL/
$(function() {
var button = $("#button"),
onclick = button.attr("onclick"); //get onclick value;
onclick = new Function(onclick); //manually convert it to a function (unsafe)
button.attr("onclick", null); //clear onclick
button.click(function() { //bind your own handler
alert("jquery");
onclick.call(this); //call original function
})
});
Chociaż istnieje lepszy sposób na przekazywanie params. Możesz użyć atrybutów danych.
<button data-param="<%= paramValue %>"...
0 dla odpowiedzi nr 2
Możesz to zrobić w ten sposób:
<button type="button" data-jspval="anything">Button</button>
$("button").on("click", function () {
var $this = $(this), //store this so we only need to get it once
dataVal = $this.data("jspval"); //get the value from the data attribute
//this bit will fire from the second click and each additional click
if ($this.hasClass("fired")) {
alert("jquery"+ dataVal);
}
//this will fire on the first click only
else {
alert("button");
$this.addClass("fired"); //this is what will add the class to stop this bit running again
}
});
0 dla odpowiedzi № 3
Utwórz oddzielną funkcję javascript, która zawiera to, co chcesz zrobić po kliknięciu przycisku (tj. Usunięcie atrybutu onclick i dodanie kodu zamiennego w jego własnej funkcji).
Następnie wywołaj tę funkcję na końcu
$("button").on("click", function(){
alert("jquery");
});
Zostanie ci coś takiego
function buttonFunction()
{
//Do stuff here
}
$("button").on("click", function()
{
alert("jquery");
buttonFunction();
});
<button type="button">Button</button>