How to trigger a js function with Jquery - javascript

I want to trigger this jquery function by using trigger method of JQuery. How can I do that ? Actually I dont even know the trigger method is suitable for user defined functions.
$('a.pop').click(function() {alert('testing'); }
this is not working
$('a').trigger(testtt);
var testtt = function(){ alert('aaa');}

Very similar to the way you install the event handler:
$('a.pop').click();
If you have the name of the event you want to trigger as a string, you can also do it this way:
$('a.pop').trigger('click');
This is also the solution to use if you want to pass crafted data to the event handler -- trigger also accepts a second parameter.

You can trigger a click event on the element by simply running
$('a.pop').click()

$('a.pop').click(), or if you're triggering some dynamic method, or custom event:
$('a.pop').trigger(eventName), e.g: $('a.pop').trigger('click');

Reading from jQuery API, the following should work.
$('a.pop').trigger('click');

.trigger() is used to trigger event handlers (custom or built-in'). Since you bound your function to the "click" handler, you can use trigger like so to call it:
$('a.pop').trigger('click');
jQuery's event binding methods can also be called without parameters to trigger them, which means you can also do this:
$('a.pop').click();

Related

onchange event value changed programmatically

It's possible (using jQuery or native JS) catch a change event for an input whose value is changed programmatically?? I'm not able to fire the event when the value changes.
Thx for your time.
Sure:
$("input").change(function() {
// listening for changes
});
// triger change event manually
$("input").change();
Most of the jQuery event handlers are also triggers.
For example, you can trigger the change() event as follows:
jQueryElement.change();
Or, you can use the jQuery trigger() function for any event:
jQueryElement.trigger("change");
With regular JavaScript (because jQuery isn't always necessary), use dispatchEvent():
jsElement.dispatchEvent("change");
Links to documentation pages are included.

How to override click event in jquery

I am working with JavaScript and JQuery, there is a reference for click event from jquery.js,
Here I am trying to override the click event, its not happened.
Even though overridden still it is fairing old one not new one.
Is there any way to load event based on priority wise?
if I have understood correctly this works for you:
$('.xxx').off('click').on('click', function(e) {
e.preventDefault();
}
what you need to do is Call 'unbind' method first and then 'bind' method to write new click event of Jquery,
and also make sure that all Jquery Plugins loaded properly, below is an example :
$("#button").unbind("click").bind("click", function(){
alert("this is Overridden click event!");
});
Maybe you need to "unbind" click event which defined as inline attribute. In this case you can use $.removeAttr() method.
$(SELECTOR).removeAttr('onclick');
The .click() adds a new handler every time it's called, not overwrites an existing one.Execution will be in the order in which they were bind.
You can use $(id).unbind() to clear handlers on that element before adding the new one.

Bind directly to DOM with not event

I have the following jQuery:
$('#big-bad-bold-button')
.on('click', aloha.ui.command(aloha.ui.commands.bold));
It binds the click event. How could I achieve the same binding without having to click?
I want to call programatically the function and perform the binding to the DOM without having to click.
UPDATE: I created a JSBin with the below solution of StackBox: http://jsbin.com/kofire/3/
It seems that aloha.ui.command is a higher order function, I think you can
use code like this:
aloha.ui.command(aloha.ui.commands.bold)($('#big-bad-bold-button'))
Curring is an intereseted thing:http://en.wikipedia.org/wiki/Currying

how to remove event listener, set in jQuery, using pure JS?

I have a situation where a click eventlistener is being set on on a dynamic element using jQuery's .on:
$('body').on('click', '#email-me', function() {
call my code....
});
and later on in the page, I have to remove this listener - but - and here's the catch - I DON'T have access to jQuery anymore (long story), which means pure js...
so, I can't use unBind(), and even if i name my anonymous function up there, it still won't remove the event listener.
How do I remove the bind, so this element isn't clickable anymore?
Thanks for reading!
You can't. jQuery events are handled differently than normal javascript events.
When you add an event to an element with jQuery, these steps are followed:
If the element hasn't been initialized with an internal (internal to jquery) datacache, it gets initialized with a datacache, then the datacache is returned.
If this is the first event handler added for that event type, a special event is added to the element for that event type that executes jQuery.event.dispatch.
Finally, the handler(s) that you passed in are added to the datacache.
Therefore, the only way for you to remove this event is to get ahold of the special event handler that jQuery bound that triggers jQuery.event.dispatch, but since you don't have access to jQuery, there's no way you will get that event handler. (even with access to jQuery, I don't think you can get that handler.)
You need to instead find a way to retain access to jQuery, or don't use it at all.

jQuery - Calling .trigger('click') vs .click()

In jQuery what is the better way to trigger an event such as click? Using the .trigger('click') function or calling .click()?
I have always triggered this event by using .click() but suddenly decided maybe I should be using .trigger('click') instead.
I use these event triggers to trigger event listeners created with .on('click', function(){...}).
I have checked the jquery api, searched other stackoverflow posts [ 1 ] [ 2 ] and I can see no reason to use one over the other.
I would be more inclined to use .trigger() to keep all event triggering consistent, as this can be used to call any event including custom events. But it would seem .trigger() does not work in all cases.
What is the best way to trigger an event? .trigger('click') or .click()?
If you're using .trigger() you have the advantage of being able to pass additional parameters, whereas .click() must be called without any.
Taken from the documentation:
$('#foo').bind('custom', function(event, param1, param2) {
alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);
'Custom' and 'Event' are being passed to the event handler as param1 and param2 respectively
Besides that, the .click() is unlike other functions that implement get / set based on the number of arguments, because it implements trigger / set instead. Using a dedicated .trigger(), to me, is more logical.
One caveat to be aware of when using the jQuery method is that, in addition to being a jQuery method, .click() is also a DOM Level 2 native JavaScript method that can be called on HTML elements, such as <button> elements.
One place where this can become confusing is if you have a selector like this:
$("#element")[0].click();
There, you are actually calling the method on the DOM element. For instance, if you tried
$("#element")[0].trigger('click');
you would get an error that the element has no trigger method defined.
Be aware that $('#element')[0].click(); won't work in Safari, on certain elements. You will need to use a workaround.

Categories

Resources