jquery - Previous div won't de-highlight on clicking sibling div -
i developing web application have 8 div elements having same class , dynamically generated. want highlight particular div on click , de-highlight when click on div.so far, have tried following code block, not working. have researched , tries different tweaks @ current stage highlights in red divs click won't remove highlight previous one. code :
$(document).ready(function() { $(".imagediv").on("click", (function(e) { //alert("jquery hit !!"); $(".imgdiv").removeclass("imgdiv-selected"); $(this).addclass("imgdiv-selected"); //$(this).addclass(".imagediv-selected").siblings().removeclass(".imagediv-selected"); $(".imgdiv-selected").css("border-color","red"); })); }); please give valuable insights sounds simple taking me lot of time.
edit : divs created follows. there no html such :
images.foreach(function callback() { var elem1 = document.createelement("div"); elem1.setattribute("class", "imagediv"); // elem1.onclick = clicked; document.getelementbyid("images").appendchild(elem1); var img1 = document.createelement("img"); img1.setattribute("class", "image"); img1.src =images[cnt++]; document.getelementbyid("images").appendchild(elem1); elem1.appendchild(img1); }); regards,
if elements generated dynamically, need delegate events:
// shorthand $(document).ready $(function() { // delegated .on() syntax $(document).on("click", ".imagediv", (function(e) { // if know you'll ever have 1 image selected // @ given time, class , remove // rather looping through images. $(".imgdiv-selected").removeclass("imgdiv-selected"); $(this).addclass("imgdiv-selected"); $(".imgdiv-selected").css("border-color","red"); }); }); this attaches event handler parent element. when click event bubbles , identified jquery having originated .imagediv, handler fire.
note: delegating @ document level extremely inefficient. it's best delegate @ closest containing parent exists on initial page load.
reference: .on()
edit:
as test case changing $('.imagediv').removeclass('imgdiv-selected'); $('.imgdiv-selected').removeclass('imgdiv-selected'); here jsperf.com test showing resulting difference.
Comments
Post a Comment