这个jquery选择器不工作,我做错了什么?

时间:2015-10-27 11:22:02

标签: javascript jquery

enter image description here

我想将一个onclick事件附加到a,但似乎无法实现此目的:

$("[class^=field-promote_image_]").each(function() {
    var a = $(this).find('.file-upload > a');
    a.on('click', function(e){
      e.preventDefault();
      alert(a.attr('href'));
    });
});

也不是这样:

$("[class^=field-promote_image_] .file-upload > a").on('click', function(e) {
    e.preventDefault();
    alert($(this).attr('href'));
});

我错过了什么?

3 个答案:

答案 0 :(得分:2)

使用attribute contains selector

$('.field-row[class*="field-promote_image_"] .file-upload > a').on('click', , function() {

警告:这将匹配其类包含field-promote_image_的所有元素。防爆。 anything-field-promote_image_

答案 1 :(得分:2)

我认为类field-promote_image_de是动态的,这就是为什么你要使用选择器开始的属性,但它不会起作用,因为那不是属性值的开始。

这里的正确方法是向该元素添加一个额外的类,如

<div class="form-row field-promote_image field-promote_image_de">
   ...
</div>

然后只使用新类

$('.field-promote_image a').click(function(){
    //your handler code
})

答案 2 :(得分:1)

您可以使用:

$(".file-upload > a").on('click', function(e) {
    e.preventDefault();
    alert($(this).attr('href'));
});