2014-02-26 33 views
0

免责声明独特价值 - 我,直到它在网页上呈现后,在这段代码没有控制权。的jQuery - 脚本插入使用阵列

我需要整合每个以下3个属性的一个打开的表脚本URL(每个必须在注入脚本URL不同数量)。由于没有独特的识别元素 - 最好的方法是将电话号码转换为仅有数字的字符串。

我们可以用手机号码作为重点。然后,我们可以为每个可以开启的属性号码分配一个值。下面的JavaScript区演示的步骤:

鉴于此HTML:

<ul class="ui-listview"> 
<li class="ui-li ui-li-static ui-btn-up-c"> 
    <div class="ui-restaurant-details"> 
    <div class="ui-address"> 
     <div class="ui-short-address ui-red-text ui-playfair">Arlington Heights, IL </div> 
     <div class="ui-full-address">798 West Algonquin Road </div> 
     <div class="ui-full-address">Arlington Heights, IL 60005 </div> 
     <div class="ui-phone-number"> 
     <a class="ui-link" onclick="return doCall(event);" href="tel:(111) 111-1111" data-tag="rm-telephone-number-list-click">(111) 111-1111</a> 
     </div> 
    </div> 
    </div> 
</li> 

<li class="ui-li ui-li-static ui-btn-up-c"> 
    <div class="ui-restaurant-details"> 
    <div class="ui-address"> 
     <div class="ui-short-address ui-red-text ui-playfair">Wheeling, IL </div> 
     <div class="ui-full-address">583 North Milwaukee Avenue <div> 
     <div class="ui-full-address">Wheeling, IL 60090 </div> 
     <div class="ui-phone-number"> 
     <a class="ui-link" onclick="return doCall(event);" href="tel:(222) 222-2222" data-tag="rm-telephone-number-list-click">(222) 222-2222</a> 
     </div> 
    </div> 
    </div> 
</li> 

<li class="ui-li ui-li-static ui-btn-up-c"> 
    <div class="ui-restaurant-details"> 
    <div class="ui-address"> 
     <div class="ui-short-address ui-red-text ui-playfair">South Barrington, IL </div> 
     <div class="ui-full-address">100 West Higgins Road <div> 
     <div class="ui-full-address">South Barrington, IL 60010 </div> 
     <div class="ui-phone-number"> 
     <a class="ui-link" onclick="return doCall(event);" href="tel:(333) 333-3333" data-tag="rm-telephone-number-list-click">(333) 333-3333</a> 
     </div> 
    </div> 
    </div> 
</li> 

的Javascript:

//Extract property phone (integers only) and use it as unique identifier 
//e.g. (111) 111-1111 becomes 1111111111 
var propertyPhone = $('[data-tag=rm-telephone-number-list-click]').text().match(/\d+/); //not working correctly, only grabing 3 digits 

//Use propertyPhone(s) integers like 1111111111 to be keys and assign different open table var values to be appended to script url 
var propertyArrayMap = { 
'1111111111' : '11357', 
'2222222222' : '48293', 
'3333333333' : '99430' 
}; 

//Append script after .ui-address for each phone (key) with correct value (openTableVar) 
$.each(propertyArrayMap, function(key, value) { 
    $('.ui-address').after('<div class="OTButton"><script type="text/javascript" src="https://secure.opentable.com/ism/link.aspx?rid='+value+'&restref='+value+'&bgimage=https://secure.opentable.com/img/frontDoor/ot_btn_red.png"><\/script></div>'); 
}); 

这里是一个小提琴:http://jsfiddle.net/7Er9R/1/

一个红色按钮会被附加到脚本将生成的每个属性(如果d)一个正确。到目前为止,我已经尝试过最好的 - 任何想法如何让它按预期工作?

回答

0

首先出现在页面上更$('[data-tag=rm-telephone-number-list-click]')元素,从而通过他们必须循环:

$('[data-tag=rm-telephone-number-list-click]').each(function() { 

}); 

在这个$.each声明,你可以把你的结果到一个数组。像下面的东西应该工作:

var result = []; 

$('[data-tag=rm-telephone-number-list-click]').each(function() { 
    var $this = $(this); 
    result.push($this.text().replace(/\D/g,'')); 
}); 

console.log(result); 

see this updated fiddle

See updated fiddle

+0

感谢迪特 - 即采取PHONENUMBERS(第一步)的照顾。但是,我们如何完成propertyArrayMap赋值并获取每个属性的脚本并为其添加? –

+0

看到更新的小提琴,类似的东西? – Dieterg

+0

嗯..不完全。关键/值是独一无二的。因此,如果键(电话)是1111111111,那么传递给打开的表url的值将是11357.如果键是2222222222,那么传递给打开的表url的值将是48293.因此,我对于键/值对的映射是应该在这样的脚本代码网址进行底涂:https://secure.opentable.com/ism/link.aspx?rid='+value+'&restref='+value+'&bgimage=https://secure.opentable.com /img/frontDoor/ot_btn_red.png(此脚本将创建红色按钮,如果自动小提琴代码工作正常) –