无论我点击哪个部分,都会显示警报

时间:2017-12-31 05:42:05

标签: javascript jquery html



$("#test").on('click',  begin);

function begin(){
  var test = ["apple","pear","banan"];
  for (var i=0; i < test.length; i++){
    console.log(test[i]);
    var listItem = document.createElement('text'),
    html = `<pstyle='margin-left:12%;padding-           		top:8%;color:white;font-family:testFont1;font-size:15px;'> ${test[i]} </p>
    
<pstyle='margin-left:3%;color:white;font-family:testFont1;font-size:17px;line-height:5px;'>${'someothertext'}</p>
         
<pstyle='margin-left:3%;color:white;font-family:testFont1;font-size:12px;line-height:10px;'>
${test[i]}</p>
            
<pstyle='margin-left:3%;padding-bottom:8%;color:white;font-family:testFont1;font-size:12px;line-height:-10px;'>${'someothertext'}</p>`;

    listItem.innerHTML = html;
    allresults.appendChild(listItem);
    $(listItem).on('click', testAlert);
  }
}

function testAlert(e){
		let text = $(e.target.parentElement.firstChild).html().trim();
    alert(text);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="searchResults">        
    <div id="allresults" >              
    </div>        
</div>

<button id=test>click me</button>
&#13;
&#13;
&#13;

我想点按名为div的{​​{1}}标记,allresults标记应该返回数据集中的设定值。就我而言,它将是div

但是,我不知道为什么我只能输入名为appleType的{​​{1}}标记的任何部分。我必须非常具体地点击div然后才会显示警报。如果我点击任何其他地方,它会提醒allresults

所以我想要的是能够点按任何地方以获得appleType的警报。

我的JS中的for循环循环遍历数据库,并在undefined标记appleType中显示我的HTML页面中的所有值

我的JS档案:

div

我的Html文件:

allresults

我的JS文件调用tapped div:

for(var i = 0; i < res.rows.length; i++){
   var listItem = document.createElement('text'),
   html = " res.rows.item(i).appleType + "<br>" + res.rows.item(i).pearType;

   listItem.dataset.appleType = res.rows.item(i).appleType;
   listItem.innerHTML = html;
   allresults.appendChild(listItem);
}

1 个答案:

答案 0 :(得分:0)

使用源代码,我将编辑我的答案:

您的问题是,您将所有html压缩到同一个实体中,并且您假设您可以为您正在创建的内容设置属性。如果您愿意,e或事件不会将该属性应用于它,因为它是事件本身的新实例。

试试这个:

$(e.target).get(0).firstChild.data;

或非jquery路线做同样的事情:

e.target.firstChild.data

这将返回您单击的元素的第一个块,并忽略br标记和以下标记。我希望这就是你所需要的。

https://jsfiddle.net/wfbj0bgs/