单击jQuery的行为有所不同

时间:2017-01-26 06:21:35

标签: javascript jquery

我根据从服务器响应中收到的某些条件生成html元素。

@if($candidate->status == "new")
   @if($candidate->priority == "")
   <a id = "prioritize" data-value = "{{$candidate->id}}" ><img id = "priority" src="icons/non_priority.png"></img></a>
   @else if($candidate->priority == "yes")
   <a id = "prioritize" data-value = "{{$candidate->id}}" ><img id = "priority" src="icons/priority.png"></img></a>
   @endif 
@endif

还有更多像这样的内部if条件

@if($candidate->status == "scheduled")
@endif

@if($candidate->status == "good")
@endif

@if($candidate->status == "bad")
@endif

on click函数仅适用于在&#34; new&#34; condtion很满意。

@if($candidate->status == "new")
@endif

并且不会处理由其他条件填充的其他元素。但是当我评论new条件时。另一个条件如&#34; &#34;或&#34; 不好&#34;或&#34; 预定&#34;作品。

$(document).ready(function(){

$('#favorite').on('click',function(){
    if ($(this).find('img').attr('src','icons/non_star.png')) {

            var candidate_id = $(this).data('value');
            alert(candidate_id);
    }
});

$('#prioritize').on('click',function(){
    if ($(this).find('img').attr('src','icons/non_priority.png')) {

            var candidate_id = $(this).data('value');
            alert(candidate_id);
    }
});

});

虽然所有点击的ID都相同,但我并不理解这背后的问题。

3 个答案:

答案 0 :(得分:0)

html id是唯一的。您应该使用àclass属性。 按类更改id并在jquery中通过.class更改#id。

.attr(attributeName,value)用于设置属性值而不测试她。 使用.attr(attributeName)==='value' 您还可以将data- *属性添加到此测试中,以便更加确定解决方案。

答案 1 :(得分:0)

您必须将class用于可多次出现的html元素,因为id对于html元素始终是唯一的。添加课程并更改您的代码,如下所示

$('.favorite').on('click',function(){
if ($(this).find('img').attr('src','icons/non_star.png')) {

        var candidate_id = $(this).data('value');
        alert(candidate_id);
}
  });

答案 2 :(得分:0)

我认为您应该根据其状态为元素提供不同的ID,或者您应该使用他们的类名称来调用它们。