【问题标题】:If Statements with data attribute - load two different templates based on what product has been clickedIf Statements with data 属性 - 根据点击的产品加载两个不同的模板
【发布时间】:2015-09-09 00:21:09
【问题描述】:

我想根据数据属性打开两个模板,如果品牌是SIM则打开模板1,如果三星打开另一个。

这是我的代码:

$('.item .show-detail').click(function(){
    if($(this).find('[data-brand="SIM"]')) {
        var myLink1 = $(this);
        alert('hey');
        $('.content .row').fadeOut({complete: function(){detailTemplate1('Voice',$(myLink1).parent().data('brand'), $(myLink1).parent().data('model'), $(myLink1).parent().data('subcat')); $('.content .row').fadeIn(400)}});
    }else
        ($(this).find('[data-brand="Samsung"]'))
        var myLink = $(this);
        alert('link All');
        $('.content .row').fadeOut({complete: function(){detailTemplate('Voice',$(myLink).parent().data('brand'), $(myLink).parent().data('model'), $(myLink).parent().data('subcat')); $('.content .row').fadeIn(400)}});
})

【问题讨论】:

  • 怎么不工作了,有没有报错信息?
  • 问题是,如果我点击 Sim 或 Samsung,它会显示所有警报,导致为这两种情况加载第一个模板
  • 你没有正确包装你的 else 语句或者它应该是一个 else if?

标签: javascript jquery json xml


【解决方案1】:

您的代码中有很多问题。

  1. 你不能为else指定条件,你必须说else if
  2. else if 块括在括号中。
  3. 使用length 查找元素是否存在。

这是假设 data-brands 存在于您单击的 item 元素中:

$(document).ready(function(){


    $('.item').click(function(){

            if( $(this).find('[data-brand="SIM"]').length ) {
                var myLink1 = $(this);
                alert('SIM');
            }
            else if ( $(this).find('[data-brand="Samsung"]').length ) {
                var myLink = $(this);
                alert('Samsung');
            }

    });
});

http://jsfiddle.net/f32epg16/

【讨论】:

  • 小提琴有效,但是当我将它添加到我的脚本中时它不起作用,因为我有 $('.item .show-detail').click(function()
【解决方案2】:

jquery 对象总是真实的,你需要检查长度。

if($(this).find('[data-brand="SIM"]').length)

第二个else没有子句。您需要删除它或使用 else if。

【讨论】:

    【解决方案3】:

    试试这个

    $(document).ready(function(){
        $('.item .show-detail').click(function(){
            if($(this).attr("data-brand")=="SIM")
                alert("SIM");
            else if($(this).attr("data-brand")=="Samsung")
                alert("Samsung");
       });
    });
    

    使用jquery attr方法查找其值并做相关工作

    【讨论】:

      猜你喜欢
      • 2012-01-05
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多