Reputation: 658
I have looked for a lot and now I don't really know what to do. My problem is that I have a select control in a HTML5 document, like this:
<label for="efectosId" >Elija un efecto</label>
<select id="efectosId" >
<option value="THRESHOLD" selected>Limite</option>
<option value="GRAY">Escala de grises</option>
<option value="OPAQUE">Opacidad</option>
<option value="INVERT">Invertir</option>
<option value="POSTERIZE">Posterizar</option>
<option value="DILATE">Desenfoque Dilatar</option>
<option value="BLUR">Desenfoque blur</option>
<option value="ERODE">Desenfoque Erosionar</option>
</select>
Also, in a JavaScript file I have the following code:
$(document).ready(function(){
$("#efectosId").on("change",function(){
alert("hola mundo");
});
});
When I try the code in a single document where I load jQuery library, it goes fine, but when I need to use it in a document where I load jQuery library, jQuery mobile library and jQuery ui library in that order, then it doesn't work:
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="./bgrins-spectrum-98454b5/spectrum.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
Please, could I have any support?? This is driving me mad Thanks!
Upvotes: 1
Views: 110
Reputation: 658
Ok, The solution is that when I add a select using the libraries of jquery mobile ,jquery ui and bootstrap, the select control change the structure of my HTML:
<div class="ui-selectmenu-menu ui-front ui-selectmenu-open" style="top: 105px; left: 769.5px;"><ul aria-hidden="false" aria-labelledby="efectosId-button" id="efectosId-menu" role="listbox" tabindex="0" class="ui-menu ui-corner-bottom ui-widget ui-widget-content" aria-activedescendant="ui-id-7" aria-disabled="false" style="width: 196px;"><li class="ui-menu-item"><div id="ui-id-2" tabindex="-1" role="option" class="ui-menu-item-wrapper">Limite</div></li><li class="ui-menu-item"><div id="ui-id-3" tabindex="-1" role="option" class="ui-menu-item-wrapper">Escala de grises</div></li><li class="ui-menu-item"><div id="ui-id-4" tabindex="-1" role="option" class="ui-menu-item-wrapper">Opacidad</div></li><li class="ui-menu-item"><div id="ui-id-5" tabindex="-1" role="option" class="ui-menu-item-wrapper">Invertir</div></li><li class="ui-menu-item"><div id="ui-id-6" tabindex="-1" role="option" class="ui-menu-item-wrapper">Posterizar</div></li><li class="ui-menu-item"><div id="ui-id-7" tabindex="-1" role="option" class="ui-menu-item-wrapper ui-state-active">Desenfoque Dilatar</div></li><li class="ui-menu-item"><div id="ui-id-8" tabindex="-1" role="option" class="ui-menu-item-wrapper">Desenfoque blur</div></li><li class="ui-menu-item"><div id="ui-id-9" tabindex="-1" role="option" class="ui-menu-item-wrapper">Desenfoque Erosionar</div></li></ul></div>
so when I call it from jquery I have to call it like this:
$("#efectosId-menu").on("click",function(e){
console.log(e.target.textContent);
});
Upvotes: 0
Reputation: 8369
It seems that you are loading bootstrap before jquery, use this order instead:
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="./bgrins-spectrum-98454b5/spectrum.js"></script>
From bootstrap doc:
Plugin dependencies
Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs. Also note that all plugins depend on jQuery (this means jQuery must be included before the plugin files). Consult our bower.json to see which versions of jQuery are supported.
Upvotes: 1
Reputation: 148
Try
<!DOCTYPE html>
<html>
<head>
<title>dfgasdg</title>
<script
src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous"></script>
</head>
<body>
<label for="efectosId" >Elija un efecto</label>
<select id="efectosId" >
<option value="THRESHOLD" selected>Limite</option>
<option value="GRAY">Escala de grises</option>
<option value="OPAQUE">Opacidad</option>
<option value="INVERT">Invertir</option>
<option value="POSTERIZE">Posterizar</option>
<option value="DILATE">Desenfoque Dilatar</option>
<option value="BLUR">Desenfoque blur</option>
<option value="ERODE">Desenfoque Erosionar</option>
</select>
<script type="text/javascript">
$(document).ready(function(){
$("#efectosId").on("change",function(){
alert("hola mundo");
});
});
</script>
</body>
</html>
Upvotes: 0
Reputation: 87
Try to load jquery browser dependent, like if you don't need jquery mobile, just don't load it, I think they have conflicts
Upvotes: 0
Reputation: 1270
I reordered the script tags and removed integrity from jquery.min.js
$(document).ready(function(){
$("#efectosId").on("change",function(){
alert("hola mundo");
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="./bgrins-spectrum-98454b5/spectrum.js"></script>
<label for="efectosId" >Elija un efecto</label>
<select id="efectosId" >
<option value="THRESHOLD" selected>Limite</option>
<option value="GRAY">Escala de grises</option>
<option value="OPAQUE">Opacidad</option>
<option value="INVERT">Invertir</option>
<option value="POSTERIZE">Posterizar</option>
<option value="DILATE">Desenfoque Dilatar</option>
<option value="BLUR">Desenfoque blur</option>
<option value="ERODE">Desenfoque Erosionar</option>
</select>
Upvotes: 1