Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
286 views
in Technique[技术] by (71.8m points)

javascript - jQuery - on click not working for element filtered by dynamic CSS

Say I have:

<a href="http://foo.com" class="SiteClass">

Then I via jQuery I do some tests and conditionally update the class depending on the outcome, for example adding SiteDown css via jQuery addClass method, resulting in:

<a href="http://foo.com" class="SiteClass SiteDown">

I have the following JavaScript which does not fire:

$("a .SiteDown").on('click', function(e){
  e.preventDefault();
  e.stopPropagation();
  alert('Clicked SiteDown');
});

What do I need to be able to fire an alert (or any other code there) when a link with class SiteDown is clicked, keeping in mind this class can be added dynamically.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You selector is incorrect, remove space to convert it to element with class selector.

$("a.SiteDown").on('click', function(e){
  //....
});

As of now its descendant selector.


As you are approach when manipulation selector, use Event Delegation using on().

$(document).on('click', "a.SiteDown", function(e){
  //....
});

In place of document you should use closest static container.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...