2

下面的代码给了我一个警报,里面只有一个 # 符号。为什么?

编辑:我应该注意代码在 jQuery .click 事件中......如果我把它放在外面,它可以正常工作。这是更完整的代码:

 $('#continue').click(function(){
                                 var _href = $("#continue").attr("href");
                                 alert(_href);                                
            });


<a href="selectRadius.html" data-icon="arrow-r" id="continue" style="float:right;" data-role="button" data-inline="true">Continue</a>

EDIT2:这在 jsfiddle 中一切正常。但在 xcode iphone 模拟器中,我只得到#。

4

3 回答 3

3

仅从您键入的代码来看,可能代码运行得太早了。尝试将JS包装在

$(function() {
    // your code here
});

或者

$(document).ready(function(){ 
    // your code here
});

更新:

好吧,因为它是一个 iPhone 模拟器,所以它改变了一切。请记住,除非您提供问题的所有细节,否则没有人可以帮助您,无论他们有多少经验。

您是否尝试过 touchstart / touchend / tap 事件而不是点击?据我所知,Apple 在点击事件方面一直存在问题。此外,移动设备上的点击事件的响应速度会较慢(如果我没记错的话,延迟大约 300 毫秒)所以你最好只使用触摸特定的事件。

你在建什么?它是移动网络应用程序还是?它会在标准的移动浏览器或PhoneGap之类的东西中运行吗?

更新2:

行。只要没有在 Click 上调用代码,它就可以工作。这消除了另一段代码用另一个值替换您的“href”的可能性,因为该代码必须在您的$('#continue').click(function(){ });块内。

点击事件是在触摸手机上模拟的,这就是为什么触摸事件更快(它们是原生的)并且不太可能导致问题的原因。您还应该确保您在此处返回 false 而不是点击链接,这可能会取代您的“href”。

于 2012-05-27T02:56:45.033 回答
1
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){ 
    $('#continue').click(function(e) {
        var _href = $(this).attr('href');
        alert(_href);

        e.preventDefault();
        return(false);
        /*
           the return is legacy code, used by some
           browsers to detect if current event handler
           is braking default behaviour

           the e.preventDefault() function is the jQuery
           way to do it
        */
    });
});
</script>

<a href="selectRadius.html" data-icon="arrow-r" id="continue" style="float:right;" data-role="button" data-inline="true">Continue</a>

如果没有此行,则链接将被跟踪,并且会发生刷新以终止当前脚本。

于 2012-05-27T03:15:53.980 回答
0

https://github.com/jquery/jquery-mobile/issues/3777

于 2012-05-27T03:43:34.577 回答