jQuery id-starts-with触发器不起作用

时间:2016-08-11 14:27:18

标签: javascript jquery

我发生了一件非常奇怪的事情。我以前从未见过这个。我对jQuery / Javascript不是很了解,但对于我未经训练的眼睛,这看起来很疯狂......

如果没有alert('hello')功能下的$(document).ready,ID-begin-with选择器不会触发(即,不会警告“再见”)。如果我在alert('hello')函数下方添加$(document).ready),则会突然显示alert('goodbye')个字词。

这怎么可能?

<script type="text/javascript">
    $(document).ready(function(){
        alert('hello');
        $('a[id^="hash-"]').click(function(e){
            e.preventDefault();
            alert('goodbye');
        });
    });
</script>

我也试过.on():

<script type="text/javascript">
    $(document).ready(function(){
        alert('hello');
        $('a[id^="hash-"]').on('click', function(e){
            e.preventDefault();
            alert('goodbye');
        });
    });
</script>

HTML元素最初是在页面加载时添加的,但如果您过滤了bootgrid表,则可以更改HTML元素,因此我按照评论中的建议将其更改为.on()

<td>
    <a id="hash-1" href="#" data-row-id="1">
        <i class="zmdi zmdi-arrow-left-bottom" title="Select this site"></i>
    </a>
</td>

然后我尝试了这个(因为图标所在的原始<td>也是动态创建的):

$(document).on('click', 'a[id^="hash-"]', function(e){
    e.preventDefault();
    alert('goodbye');
});

也不成功......

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:-3)

这对我来说很好。

$(document).on('click','a[id^="hash-"]',function(e){
  e.preventDefault();
  alert('goodbye' + $(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    <a id="hash-1">1</a> 
    <a id="hash-2">2</a> 
    <a id="hash-3">3</a> 
    <a id="hash-4">4</a>