ho questo codice:jQuery figli a href click non funziona
<html>
<head>
<title>site</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#wlink a').click(function() {
$('.box:visible').fadeOut('fast', function() {
$('#' + (this.id).replace('link', '')).fadeIn('fast');
});
$('#wlink a').removeClass('selected');
$(this).addClass('selected');
});
$('#wlink div').click(function() {
var child = $(this).children();
child.click();
});
$('#linkbox1').addClass('selected');
$('#box1').fadeIn('fast');
});
</script>
</head>
<style>
a { outline: none; cursor: pointer; }
#wrapper { border:1px solid #cccccc; border:solid 1px #ddd; width:806px; height:255px; overflow: hidden; }
#wrapperBox { width:6000px; }
span.text { font-size:100px; color:#aaa; }
div.box { float:left; width:805px; height:255px; background:#efefef; display: none; }
#wlink div { width: 200px; text-align:center; display: block; float:left; border: solid 1px #ddd; }
a.selected { background: #eee; }
</style>
<body>
<div id="wrapper">
<div id="wrapperBox">
<div id="box1" class="box">
<span class="text">Box 1</span>
</div>
<div id="box2" class="box">
<span class="text">Box 2</span>
</div>
<div id="box3" class="box">
<span class="text">Box 3</span>
</div>
<div id="box4" class="box">
<span class="text">Box 4</span>
</div>
</div>
</div>
<div id="wlink">
<div><a id="linkbox1">Box 1</a></div>
<div><a id="linkbox2">Box 2</a></div>
<div><a id="linkbox3">Box 3</a></div>
<div><a id="linkbox4">Box 4</a></div>
</div>
</body>
</html>
Ora quello che voglio fare è quando il DIV padre della A HREF viene cliccato, voglio simulare un HREF clic. Ma non funziona, e ottengo questo errore:
too much recursion
[Break On This Error])});return}if(e.nodeType===3||e.nodeTy...nt=="undefined"&&(b=b.ownerDocument||
Cosa c'è di sbagliato con il mio codice?
Grazie, J
Ho pensato che volesse interromperePropagazione e impedireDefault, il modo più efficiente per farlo è solo restituire falso. Inoltre, ho personalmente riscontrato problemi di compatibilità del browser con queste due funzioni, ma mai con l'utilizzo di return false. Non sono d'accordo sul fatto che l'utilizzo di return false sia una cattiva pratica, qualcuno che decida di dire che la sua migliore pratica sul proprio blog non mi taglierà alcuna senape. Se avesse avuto bisogno dell'azione di default, ma non dei ribollimenti, la risposta corretta sarebbe stata utilizzare e.stopPropagation. Preferisco la mia risposta più elegante. – sillyMunky
Indicando queste cose nel collegamento e fornendo un'alternativa è una buona chiamata, forse l'OP non li ha incontrati prima. Ma penso che affermare che esiste una "best practice" per questo, che è la lunga strada, non è così utile. – sillyMunky
Hai dato per scontato che lo volesse senza dirlo esplicitamente, il che credo sia il cattivo servizio.I neofiti devono capire * cosa * fa il loro codice e * perché * dovrebbero scriverlo in un modo o nell'altro. Se l'OP voleva "restituire false" pur comprendendo le sue implicazioni, bene. Quello che è un disservizio è dire "basta restituire false per impedire la propagazione", quando non è tutto che restituisce false e potrebbe avere altri impatti negativi. Sto dicendo "Questo è il codice che fa ciò che hai chiesto, ed ecco cosa restituisce il falso in realtà. Usare saggiamente". Davvero, non è un grosso problema. –