我很努力弄清楚如何在jQuery中调用/执行函数。我已经做了相当多的搜索,并找到它看起来像应该是答案,但它似乎并没有工作。我认为这是一个范围问题,因为所有其他东西似乎与我在这里找到的示例相匹配,但是我对jQuery相对较新,并且无法完全弄清楚。执行存储为变量名称的jquery函数
基本上,当单击“书签”按钮时,它使用ajax在数据库中创建一个条目,并更改单击按钮的格式。这按预期行事。诀窍是这需要有人登录。实际点击该按钮会为url添加一个#bookmarkme锚点 - 如果它们没有登录(这是事情开始变得棘手的地方),登录窗口会弹出并提示他们注册/登录,并重新加载页面以正确设置所有登录变量。这也按预期工作。它发生故障的地方是用户登录并重新加载页面后,我无法运行“bookmarkFunction”。
<script type="text/javascript">
var loggedin = <?php echo $loggedin; ?>;
var headerButtonScript = function(){
var bookmarkFunction = $("#bookmark").click(function(){
var directoryName = "<?php echo $directoryName;?>";
if(loggedin == 1 && $("#bookmark").hasClass("headerButton")){
$.ajax({
type: "POST",
url: "../includes/bookmarkProcess.php",
data: {directory: directoryName},
success: function(data, status){
if(data == "success"){
$("#bookmark").switchClass("headerButton", "headerButtonDisabled", 1000, "easeInOutQuart");
$("#bookmark").text("Bookmarked");
}
}
});
}
else{
$("#signInContent").toggleClass('hidden');
$("#signInPopUp").toggleClass('hidden');
}
});
};
var headerButtonsAfterLoad = function(){
var currentAddress = window.location.href;
var hashPosition = currentAddress.indexOf("#");
var targetLocation = currentAddress.substring(hashPosition+1);
if(targetLocation == "bookmarkme"){
if(loggedin==1){
//CALL bookmarkFunction HERE;
//I know I get to this location when expected, because placing an alert("message") gives me the pop up
}
}
};
$(document).ready(headerButtonScript);
$(window).bind('load',"",headerButtonsAfterLoad);
</script>
根据我的研究,我曾尝试以下行(一行每次而不是所有企图,当然一次)的摘录,试图调用功能,但还没有运气。
if(targetLocation == "bookmarkme"){
if(loggedin==1){
//CALL bookmarkFunction HERE;
bookmarkFunction();
bookmarkFunction.run();
bookmarkFunction.call();
bookmarkFunction.apply();
}
}
任何帮助找到我的问题 - 范围,方法,否则 - 非常感谢!
我不知道为什么你正在这么复杂.. 'bookmarkFunction'不是函数...这是一个jQuery对象... – 2014-10-08 04:03:04
'bookmarkFunction。点击()' – epascarello 2014-10-08 04:03:42
@epascarello - 当页面重新加载时,我需要脚本采取与点击书签按钮(ID =书签)时相同的操作,并在单击ID时具有锚点#bookmarkme。点击触发很容易,但如果锚点存在,我无法触发重新加载。 (#) – redstang423 2014-10-08 04:09:27