Cómo ejecutar la función almacenada como una cadena sin eval ()

Permítanme comenzar esta pregunta diciendo que puede haber una solución completamente diferente a mi título, así que permítame decirle lo que estoy buscando por completo.

Básicamente tengo una serie de enlaces de menú. El href en todos los enlaces está almacenando funciones jQuery, no URL (para controlar el script del libro turn.js ). Así que uno de los href puede parecer así:

  

La solicitud es simple … al click() en un elemento del menú, necesito ejecutar el contenido de href . Mi primer pensamiento fue ejecutar cada enlace y almacenar una cadena temporal de href y luego usar eval() pero parece ser una mala opción de lo que leí.

Entonces, ¿cómo puedo ejecutar el contenido de mi href rápida y segura?

¿Qué hay de usar el evento onclick?

 Click me! 

Alternativamente, ya que estás usando JQuery, podrías .bind() el evento:

   Click me! 

Alternativamente, ya que solo tiene acceso al atributo href , PODRÍA hacer esto, que es la salida fácil:

  Click me! 

Hay algunas soluciones aquí. Es posible que desee considerar el uso de algo como Backbone, que proporciona algo llamado enrutadores que le ayudarán en la navegación.

O para piratear algo similar, configura cada una de tus tags href para que apunten a un nuevo # ancla:

next page

y luego adjunte un oyente al evento hashchange . Cuando el evento se dispara, el usuario ha hecho clic en el enlace. Luego acceda a hash window.location.hash y window.location.hash como el argumento de una función que hace lo que necesita que haga.

 $(window).on('hashchange', function(event){ $('#primary').turn('page', window.location.hash.slice(1)); } 

La slice está allí desde window.location.hash incluye el carácter # .


EDITAR

Me he dado cuenta de que está actualizado diciendo que usa wordpress y que está editando la parte http:// de sus URL. Si está utilizando el evento hashchange , no es necesario ya que href="#2" es lo mismo que href="http://mysite.post.com/this_post/#2"

¿No puedes simplemente simular un evento de clic en los enlaces en ese caso? En otras palabras, si ya tiene jquery cargado $("a#identifier").click() . En su escenario actual, esa parece ser la forma más fácil.

Tengo un problema similar y lo resolví así:

En su script, defina una función como:

$.fn.DoSomething=function (MyOption){ window.alert(MyOption); };

Y en su enlace href llame a la función como javascript:$.fn.DoSomething('Hello');